从 JavaScript 触发 target=_blank 链接

Triggering a target=_blank link from JavaScript

提问人:Pekka 提问时间:3/12/2011 最后编辑:Lightness Races in OrbitPekka 更新时间:3/12/2011 访问量:679

问:

这是一个令人讨厌的问题。

我有一个外部链接。

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

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

为此,我添加了一个加载 Google 图片的事件。图像计算转化次数。为了绝对确保在用户离开之前加载图像,我使用图像的事件继续访问原始链接的目标。clickload

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

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

 });

这将使用 .但是,它不适用于链接。 我对在onload函数中放入什么以打开新窗口感到困惑。location.hreftarget="blank"

  • 我不能使用,因为它会被弹出窗口阻止程序捕获(因为它位于图像的事件中,所以它看起来像一个纯粹的编程调用,与被点击的链接无关。此外,在没有任何选项的情况下调用window.open不会在Google Chrome中为我提供任何控件。window.openonload

  • 我无法使事件继续其正常过程,因为我必须等到图像加载完毕,这是一个异步操作!click

从本质上讲,我需要的是一种以编程方式打开链接的方法,这可能是不可能的,因为它可能会被弹出窗口阻止破坏器绕过。target="_blank"

或者,我需要一种方法来可靠地计算点击次数,同时让链接的原始事件按预期继续进行。click

有人知道该怎么做吗?

JavaScript的

评论

0赞 amit_g 3/12/2011
由于链接在新窗口中打开,因此您实际上不必等待图像加载。让图像加载到当前窗口中(就像正在做的那样),并让用户正常看到新窗口。用户不太可能在加载图像之前关闭窗口,因此计数不会受到干扰。
0赞 Pekka 3/12/2011
@amit这正是我刚才的领悟。过度并发症的总体病例:)随意添加它作为答案。
1赞 amit_g 3/12/2011
有时我们需要第二双眼睛:)
1赞 Mark Eirich 3/12/2011
Google 是否不提供用于显式跟踪链接的 JavaScript 调用?我知道他们为 Google Analytics(即 )。我很惊讶你必须自己滚动。onclick="pageTracker._trackPageview('/outgoing/facebook')"
0赞 Pekka 3/12/2011
@Mark我和你一样感到惊讶,但他们似乎确实没有。我在谷歌的文档中搜索了上下,图片是最好的

答:

0赞 JeanK 3/12/2011 #1

我不确定它是否会起作用,或者您是否可以(由于某些要求)这样做,但是:

尝试打开一个没有位置的新窗口,但在真正的点击事件中(不是在图像的加载中),但打开这个宽度和高度为 0 的窗口,并将其 x 和 y 放在用户不可见的地方,或者尽可能不可见。 保留对此窗口的引用。

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

希望它有效。

评论

0赞 Pekka 3/12/2011
事实证明,我完全把问题复杂化了:请参阅上面@amit的评论,我可以立即继续链接,无需等待。无论如何,感谢您抽出宝贵时间接受采访!
3赞 amit_g 3/12/2011 #2

由于链接在新窗口中打开,因此您实际上不必等待图像加载。让图像加载到当前窗口中(就像正在做的那样),并让用户正常看到新窗口。用户不太可能在加载图像之前关闭窗口,因此计数不会受到干扰。