我使用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会抱怨。
谢谢!
答案 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。