未捕获的ReferenceError:未定义piwikTracker

Alx*_*ejo 2 javascript jquery matomo

Piwik跟踪器允许自定义跟踪:

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

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

在Chrome中,我收到错误消息

未捕获的ReferenceError:未定义piwikTracker

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

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

编辑

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

gir*_*aff 6

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

var _paq = _paq || [];
_paq.push(['trackGoal', 3]);
Run Code Online (Sandbox Code Playgroud)

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

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