【问题标题】:Multiple piwik tracking js多个piwik跟踪js
【发布时间】: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


【解决方案1】:

我能够解决此问题的唯一方法是更改​​ piwik.js 中 _paq 变量的名称(选择一个奇怪的名称)并同步加载 piwik.js。

之后不再发生碰撞

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多