2011-03-12 56 views
-3

这是一个讨厌的问题。从JavaScript触发目标= _blank链接

我有一个外部链接。

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

现在我想在每次点击链接时跟踪Google AdWords转化。

为此,我添加了一个加载Google图像的click事件。图像计算转换。为了确保在用户离开之前加载图像,我使用图像的load事件继续处理原始链接的目标。

$("#linkname").click(function() { 

var element = document.createElement("img"); 
element.onload = function() { ..... }; 
element.setAttribute("src", "http://www.googleadservices.com/...."); 
document.body.appendChild(element); 

}); 

这将工作正常使用location.href。但是,它不适用于target="blank"链接。 我很困惑要打开一个新窗口,需要将哪些内容放入onload函数中。

  • 我不能使用window.open因为它会通过弹出窗口拦截捕获(因为它位于图像的onload事件,它类似于一个无关的链接是一个纯粹的程序化调用)另外,在没有任何选项的情况下调用window.open并不会在Google Chrome中给我任何控制权。

  • 我不能让click事件继续它的正常过程,因为我必须等待图像加载,这是一个异步操作!

我需要什么,本质上,是打开一个target="_blank"链接程序,一些可能是不可能的,因为它可以通过弹出阻滞剂断路器被规避的方式。

或者,我需要一种方法来可靠地计数点击,同时让链接的原始click事件继续按照它的设想。

有没有人有想法该怎么办?

+0

由于链接在新窗口中打开,因此您无需等待图像加载。让图像在当前窗口中加载(按原样完成)并让用户正常看到新窗口。在加载图像之前用户可能不可能关闭窗口,因此计数不会受到干扰。 – 2011-03-12 01:54:39

+0

@amit是我刚才的**精确**实现。总的情况是过度复杂:)随意添加,作为答案。 – 2011-03-12 01:55:55

+1

有时我们需要第二双眼睛:) – 2011-03-12 01:58:44

回答

3

由于链接在新窗口中打开,因此您无需等待图像加载。让图像在当前窗口中加载(按原样完成)并让用户正常看到新窗口。在加载图像之前用户可能不可能关闭窗口,因此计数不会受到干扰。

0

我不知道这是否会如果可以的话(因为一些要求)工作或做,但:

尝试打开没有位置的新窗口,但真正的单击事件(而不是在),但打开宽度和高度为0的窗口,并将其x和y放在用户看不到的地方,或尽可能不太明显。 保留对此窗口的引用。

在图像的onload事件中,更改新窗口url的位置,然后调整大小并重新定位新窗口。

希望它有效。

+0

原来我完全过分的问题:请参阅上面的@ amit的评论,我可以直接进行链接,无需等待。无论如何感谢您的时间! – 2011-03-12 01:56:47