如何根据HTML

时间:2015-10-13 15:15:18

标签: javascript html internet-explorer-8 google-tag-manager fusioncharts

我必须修改我们的Google跟踪代码管理器容器,而且我在GTM中非常棒。我们在IE8和使用Fusion Charts的页面上遇到问题。有了这个组合,我在gtm.js中有一个javascript错误,我发现它在Form Submit Listener中。所以我认为我会在该标签上添加一个例外。那个例外是"如果是ieIE8和hasFusionChartsControl"。这两个变量类型为#34; Custom Javascript"在我已定义的GTM中:

contientFusionCharts:

function() { 
  var file = "fusioncharts.js";
  var scripts = document.getElementsByTagName("script");
  for(var i = 0; i < scripts.length; i++) {
    if (scripts[i].src != undefined && scripts[i].src.substr(scripts[i].src.length-file.length) == file) {
      return true;
    }
  }

  return false;
}

estIE8:

function() {
  var isIE = !!document.documentMode; // At least IE6
  var rv = -1; // Return value assumes failure.
  if (isIE) {
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
  }

  return (rv > -1 && rv <= 8.0);
}

我测试了那些javascript函数,它们在IE8上运行良好。现在我已经定义了一个触发器: My GTM trigger that is a Page View Event, triggered on Window Loaded and fire On pageHasFusionChartsControls and isIE8

现在我的标记,我只添加了例外:enter image description here

这看起来很好,但它仍然无法正常工作。我可以证明此标记存在问题,因为我创建了一个查找特定页面的URL的异常,当我浏览此特定页面时,不再引发js错误。但我不想创建指定特定页面的异常,因为这是一个Sharepoint站点,用户可以按照自己的意愿创建页面。因此,我不希望每次在页面中使用Fusion Charts控件时都必须添加例外。所以我认为寻找适合Fusion Charts的特定html标签是一个好主意,我得出结论,寻找包含fusioncharts.js的脚本将是一个好主意。

如果您对其工作原理和替代解决方案有解释,那就太棒了!谢谢!

1 个答案:

答案 0 :(得分:2)

以下是我在Simo Ahava的Google产品论坛上收到的答案:

  

     

例外仅阻止您为其设置的事件。所以你的   异常只会阻止“Window Loaded”事件。是你的标签   解雇那个事件?如果您的标签在“所有页面”事件中触发,   它使用的是Page View,而不是Window Loaded事件,因此您需要   相应地更改您的Exception触发器以匹配事件   标签

     

或者您可以创建一个阻止所有事件的全局异常   符合其他条件。您可以使用自定义事件执行此操作   触发,并将事件名称设置为。*(并检查RegEx)。

     

http://www.simoahava.com/gtm-tips/block-your-tags-with-trigger-exceptions/

     

西莫

我选择使用自定义事件触发器创建全局异常,其事件名称为。*(使用RegEx)并且运行正常。