window.open避免函数处理程序

时间:2015-07-08 11:17:42

标签: javascript google-analytics

我正在使用Google Analytics外部链接跟踪代码:

var trackOutboundLink = function(url) {

    ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
            function () {
                window.open ( url, "_blank" );
                //document.location = url;
            }
        });
    }

来自:

<a target="_blank" onclick="trackOutboundLink('http://www.example.com'); return false;" href="http://www.example.com">Full Brochure</a> 

但是,由于未直接从用户交互中调用window.open,因此启用了浏览器弹出窗口阻止程序。

如何实现此目标,以便目标是一个新标签,但弹出窗口阻止程序没有使用?感谢

1 个答案:

答案 0 :(得分:1)

我会不引人注意地这样做。所以:

<a target="_blank" href="http://www.example.com" rel="external">...</a>

然后JS:

/* Find all external links in the document... */
var ext_links = document.querySelectorAll('a[rel=external]');

/* Iterate through each external link in the document... */
[].forEach.call(ext_links ,function(a){
    /* For each external link, assign an onclick callback: */
    a.addEventListener('click',function(){
        /* Google tracking code here, try this: */
        var url = a.href;
        ga('send', 'event', 'outbound', 'click', url);
    })
});

注意我没有使用event.preventDefault()来取消超链接的默认操作,因此在“click”功能运行后,它仍应立即在新窗口/选项卡中打开。