【发布时间】:2016-04-15 03:37:26
【问题描述】:
我有 wordpress 插件,它在客户端站点上输出 Piwik 跟踪 js:
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://piwik.com//";
_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.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="http://piwik.com/piwik.php?idsite=1" style="border:0" alt="" /></p></noscript>
问题是一些客户已经在使用他们自己的 piwik 跟踪 js,最终在他们的网站上输出了两个 piwik 跟踪 JS。
那就有冲突了,因为两个跟踪JS都在写同一个JS对象“_paq”
如果有一些解决方案,比如 jQuery 的 noConflict(),那就太好了。
因此需要告诉我包含的“piwik.js”不要从“_paq”中读取并从我的一些自定义对象中读取的方式。到目前为止,正如我所见,我需要为此修改 piwik.js。
我看到 piwik 有多个跟踪选项:Multiple Piwik trackers
但是我无法控制另一个跟踪代码,我只能控制跟踪从我的插件输出的 JS。
所以,任何帮助都会非常有用。
【问题讨论】:
-
您能否让您的变量使用自定义变量(如多个 Piwik 跟踪器部分所建议的那样)并让客户使用默认的 _paq?
-
我正在尝试。唯一的问题是我需要将 piwik.js 加载到站点,客户端也会加载它自己的 piwik.js。现在我不知道如何控制在我的代码中使用“Piwik.getTracker”从哪个 piwik.js 实例化跟踪器。因为如果它使用客户的 piwik.js 并且他使用的是旧版本的 Piwik,我将没有一些 piwik 方法
标签: javascript matomo javascript-namespaces