2

Piwik 跟踪器允许自定义跟踪,例如:

jQuery('div.orange').click(function() {
    piwikTracker.trackGoal(3); // Track click on this hitarea
});

在我的 WordPress 环境中,出于显而易见的原因,我将这个 jQuery 加载到与 piwik.js 脚本分开的脚本中。

在 Chrome 中,我收到错误消息

未捕获的 ReferenceError:未定义 piwikTracker

在我使用自定义跟踪的脚本上。

有没有办法在调用事件处理函数之前定义函数?为什么只有 Chrome?

编辑

我检查了加载 JavaScript 的 piwik php 脚本,它实际上是在页脚中加载脚本。调用自定义跟踪的函数加载在标题中。这有关系吗?页眉中的脚本总是在页脚之前加载吗?

4

3 回答 3

6

异步跟踪以一种优雅的方式解决了这个问题:

var _paq = _paq || [];
_paq.push(['trackGoal', 3]);

如果之前加载了 piwik,则会自动发送目标请求。如果在它之后加载 piwik,它只是一个数组,一旦加载 piwik 就会被处理!

请参阅有关如何设置异步跟踪的文档,这将是 Piwik 1.11 的默认方法。

于 2013-02-25T14:55:37.137 回答
3

是的。将脚本放在页面中的位置很重要。认为,当浏览器解释页面时,它会先读取头部,然后读取正文。对于您的情况,您最好先检查 DOMReady 和对象 piwikTracker。

jQuery(document).ready(function() {
    jQuery('div.orange').click(function() {
        if (piwikTracker) {
            piwikTracker.trackGoal(3); // Track click on this hitarea
        }
    });
});
于 2012-06-28T18:59:02.540 回答
1

尝试将您的代码放入ready处理程序中:

$(function(){
  jQuery('div.orange').click(function() {
    piwikTracker.trackGoal(3); // Track click on this hitarea
  });
});

onload任何有效的事件:

window.onload = function() {
  jQuery('div.orange').click(function() {
     piwikTracker.trackGoal(3); // Track click on this hitarea
  });
}
于 2012-06-28T18:49:23.730 回答