【问题标题】:Link with OnClick event any reason it will not fire/work?与 OnClick 事件链接是否有任何原因不会触发/工作?
【发布时间】:2015-10-03 05:17:39
【问题描述】:

我有以下链接来跟踪谷歌分析的跨站点旅行:

<a href="http://example.com/test.html" 
   onclick="_gaq.push(['_link', 'http://example.com/test.html']); 
   return false;"     
   class="noFloat" 
   target="_blank"> 
   Click Me
</a>

我正在尝试调试为什么此链接不起作用,我单击它并没有打开新窗口。只是想确认上面的代码有问题,还是我的页面上的其他东西破坏了这个?如果是这样,我将继续调试 javascript。

【问题讨论】:

  • 大多数浏览器都有开发工具,如果有错误,它会告诉你错误。在 Chrome 和 IE 中按 F12。此外,JScriptJavaScript 是不同的语言,虽然相似但它们确实有区别。
  • 好地方感谢 Jscript 与 Javascript 提示没有意识到这一点。我一直在寻找,但没有雪茄会潜得更深。只是想确保并再次关注链接以确认语法没问题。 jscript 和 javascript 的区别:stackoverflow.com/questions/135203/…

标签: javascript html google-analytics


【解决方案1】:

return false; 阻止了链接行为。要让链接照常完成,只需将其删除:

<a href="http://example.com/test.html" 
   onclick="_gaq.push(['_link', 'http://example.com/test.html']);"     
   class="noFloat" 
   target="_blank"> 
   Click Me
</a>

【讨论】:

  • 完全正确,不知道为什么我在过去遇到类似问题之前没有看那个。我还必须补充一点,我们需要定义_gaq.push(['_setDomainName', 'example-petstore.com']); example.petstore.com 应该是您当前所在的域。如果没有这个定义, _.gaq.push 方法就会失败,或者我应该说陷入我在调试时注意到的循环中。
  • 在 onlick 事件之前定义了 target="_blank",就像一个魅力,可以保持 return false 很好,这会阻止 _gaq.push 在同一个窗口中加载链接。
  • Rory 的回答是正确但不完整。不要在不了解 Google Analytics 的“_link”方法的作用(完成后会导致重定向)之前删除“return false”。有关详细信息,请参阅下面的回复。
【解决方案2】:

如果链接在新窗口中打开(target="_blank"),您正在使用的传递 cookie 信息的内联方式将不起作用,return-false 基本上覆盖了该 a-tag 的功能。

您必须更改&lt;a&gt;-tag 的href=""

<a href="http://example.com/test.html" 
   id="ext-link"     
   class="noFloat" 
   target="_blank"> 
   Click Me
</a>

然后有以下javascript:

_gaq.push(function() {
  var pt = _gat._getTrackerByName(),
      link = document.getElementById('ext-link');
  link.href = pt._getLinkerUrl(link.href);
});

【讨论】:

  • 我遇到了这个问题,并意识到我用来 trackOutboundLink 的 JS 调用了 document.location = url,它没有指定目标。将其更改为 window.open(url, '_blank');
【解决方案3】:

怎么样:

<a href="#" onclick="Clicked();" class="noFloat" target="_blank"> 
   Click Me
</a>

function Clicked()
{
_gaq.push(['_link', 'http://example.com/test.html']); 
window.location = "http://example.com/test.html";
return false;
}

【讨论】:

    【解决方案4】:

    如果您的脚本标签不在文档的 head 中,我发现默认的分析链接代码会中断。

    【讨论】:

      【解决方案5】:

      Rory McCrossan 是正确的,“return false”将停止链接的默认行为,但对于这种情况,这是一个不完整的答案。推送到 Google Analytics (GA) 的“_link”方法将在完成处理后导致重定向。 GA 需要时间来完成。详情见:http://bit.ly/1iasHQh

      GA 重定向失败的原因是另一个问题。两种理论:(1)我曾经经历过这种情况,并意识到这是因为我使用的是 Chrome 并安装了“Google Analytics Opt-out Add-on”。 (2) "_link" 方法可能与使用 target="_blank" 不兼容。如果使用目标打开一个新窗口/标签,您可以安全地删除“return false;”因为当前处理 Javascript 的页面不会关闭,这仍然允许 GA 做它的事情。

      希望对其他人有所帮助。

      【讨论】:

        【解决方案6】:

        看完答案后,没有一个完全奏效。就我而言,我的链接结构如下:

        <a href="http://www.google.com/" target="_blank" onclick="trackOutboundLink('http://www.google.com'); return false;" >
        Outbound Link</a>
        

        页脚中的 JS 损坏

        var trackOutboundLink = function(url) {
           ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
             function () {
             document.location = url;
             }
           });
        }
        

        修正了页脚中的 JS:

        var trackOutboundLink = function(url) {    
         ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
           function () {
            window.open(url, '_blank');
           }    
         }); 
        }
        

        原来 JS 没有指定目标,所以它在同一个窗口中打开。删除“return false”允许触发 a href 和 onclick,从而打开两个窗口。

        【讨论】:

          猜你喜欢
          • 2021-01-26
          • 1970-01-01
          • 2020-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-27
          • 2014-09-18
          相关资源
          最近更新 更多