使用onclick属性进行竞争条件

时间:2014-05-07 19:58:06

标签: javascript html onclick

我在点击链接时尝试调用以下1x1像素(sact.atdmt.com)。它实际上只返回1x1图像,但用于ping我们的服务器,实际上是在这个实例中计算一次点击。

<a href="http://www.google.com/" onclick="javascript:img1=new Image(); img1.src='http://sact.atdmt.com/action/adofat_ImageTest27_1'; img1.height='1'; img1.width='1'" ;="">test</a>

以上代码仅适用于IE。我无法弄清楚为什么它在Chrome或Firefox中不起作用。我认为存在某种竞争条件,在onclick函数执行更改之前,href正在被解析,但它只存在于这些浏览器中。

这有什么问题吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

修复语法错误并添加return false;

<a 
    href="http://www.google.com/" 
    onclick="javascript:img1=new Image(); img1.src='http://sact.atdmt.com/action/adofat_ImageTest27_1'; img1.height='1'; img1.width='1'; return false;"
>test</a>

顺便说一句,如果你没有显示图像,那么你就不需要设置图像的高度/宽度

答案 1 :(得分:0)

Ejay的答案很好,但我觉得有必要提一下,我通常会远离onclick =。这是因为屏幕阅读器无法将onclicks可靠地注册为实际的点击事件。

所以,如果你有兴趣......这是安全的做法。

JS

function imageClickHandler(){
var img1;
var img1=new Image();
img1.src='http://sact.atdmt.com/action/adofat_ImageTest27_1';
img1.height='1';
img1.width='1';
}//end function

document.getElementByID("TheExampleLink").addEventListener("click",imageClickHandler,false);

HTML

<a href="http://www.google.com/" id="TheExampleLink">test</a>

我希望这有帮助,你考虑不使用onclick。 :)