Javascript 未捕获引用错误:未定义piwikTracker

Javascript 未捕获引用错误:未定义piwikTracker,javascript,jquery,matomo,Javascript,Jquery,Matomo,Piwik tracker允许自定义跟踪: jQuery('div.orange').click(function() { piwikTracker.trackGoal(3); // Track click on this hitarea }); 在我的WordPress环境中,我加载这个jQuery的脚本与piwik.js脚本不同,原因很明显 在Chrome中,我收到错误消息 未捕获引用错误:未定义piwikTracker 在脚本上,我正在使用自定义跟踪 在调用事件处理程序函数之前,

Piwik tracker允许自定义跟踪:

jQuery('div.orange').click(function() {
    piwikTracker.trackGoal(3); // Track click on this hitarea
});
在我的WordPress环境中,我加载这个jQuery的脚本与piwik.js脚本不同,原因很明显

在Chrome中,我收到错误消息

未捕获引用错误:未定义piwikTracker

在脚本上,我正在使用自定义跟踪

在调用事件处理程序函数之前,是否有一种方法可以定义函数?为什么只有铬

编辑


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

尝试将代码放入
就绪处理程序:

$(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
  });
}

对。你把脚本放在页面的什么地方很重要。认为当浏览器解释页面时,它将首先读取页眉,然后读取正文。对于您的情况,最好先检查DOMReady和对象piwikTracker

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

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

var _paq = _paq || [];
_paq.push(['trackGoal', 3]);
如果以前加载过piwik,则会自动发送目标请求。如果piwik在它之后被加载,那么它只是一个数组,一旦piwik被加载就会被处理


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

您是否在“网络”选项卡中验证了正在加载脚本?只是验证了,没有!它在IE中是这样的,Firefox.Piwik.js在页脚中加载,因此该函数没有加载。我尝试在页脚中指定脚本加载,但这造成了一个白色的死亡屏幕。我想我为脚本指定了错误的依赖项。我不确定Piwik和wp Piwik插件需要依赖哪个脚本。DOM:ready还不够,它应该等到window:load:
$(window.load(function(){…})