Piwik跟踪代码打破了HTML验证

时间:2016-09-11 18:31:53

标签: javascript html matomo noscript html-head

我使用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禁用的人的跟踪吗?如果<noscript>部分甚至被禁用javascript的浏览器看到,那么为什么HTML Validator会抱怨。

谢谢!

2 个答案:

答案 0 :(得分:4)

您是正确的,页眉中不允许<p><img>标记。当然HTML验证器应该抱怨。它不知道您的访问者是否启用了脚本。

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

答案 1 :(得分:3)

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

  

将Javascript跟踪代码复制并粘贴到您的网页中,在开始<body>代码之后(或在<head>部分内)

如果您需要<head>,请将<script>块放在那里,将<noscript>块放在<body>的顶部。但是没有必要这样做 - 正如官方文档所说,将整个代码块放在<body>的顶部就可以了。

  

如果禁用javascript的浏览器甚至不会看到该部分,那么为什么HTML Validator会抱怨。

因为禁用JS的浏览器仍然是浏览器需要有效的HTML。