Piwik跟踪代码破坏HTML验证

Piwik tracking code breaks HTML Validation

本文关键字:HTML 验证 跟踪 代码 Piwik      更新时间:2023-09-26

我使用Piwik来跟踪访问我博客的人。以下是Piwik跟踪代码:

<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(["setDomains", ["*.example.com"]]);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//example.com/pwt/";
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', '1']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<noscript><p><img src="//example.com/pwt/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->

他们建议将该代码粘贴在结束的</head>标记之前。

所以我已经添加了代码,它工作得很好,但我刚刚注意到它正在破坏我的HTML验证。基本上,它不喜欢<p><img>标签在页头。我应该将整个<noscript>部分移动到页面主体吗?这会破坏我对禁用Javascript的人的跟踪吗?为什么一个HTML验证器会抱怨,如果<noscript>部分甚至不会被禁用javascript的浏览器看到。

谢谢!

你是对的,<p><img>标签不允许在页头。当然,HTML验证器应该会报错。它不知道你的访问者是否启用了脚本。

我将在结束</body>标记之前移动整个<noscript>部分。该部分的工作方式是,如果有人禁用了JavaScript,它会加载一个小的不可见的图像。Piwik将加载的图像记录为访问(注意,图像源是Piwik PHP脚本)。

https://developer.piwik.org/guides/tracking-javascript-guide

复制并粘贴Javascript跟踪代码到您的页面,就在开始的<body>标签之后(或在<head>部分)

如果你想在<head>中,把<script>块放在那里,把<noscript>块放在<body>的顶部。虽然没有必要这样做,但正如官方文档所说,将整个代码块放在<body>的顶部就可以了。

为什么HTML验证器在禁用javascript的浏览器中无法看到该部分时会发出抱怨?

因为禁用JS的浏览器仍然期望有效的HTML