Javascript 未捕获引用错误:未定义piwikTracker
Piwik tracker允许自定义跟踪: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 在脚本上,我正在使用自定义跟踪 在调用事件处理程序函数之前,
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(){…})代码>