繁体   English   中英

使用onclick属性的竞赛条件

[英]Race Condition using onclick attribute

单击链接时,我尝试调用以下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,但仅在这些浏览器中存在。

是否有针对此的修复程序?

谢谢,

修复语法错误并添加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>

顺便说一句,如果您不显示图像,则无需设置图像的高度/宽度

Ejay的回答很好用,但是我不得不提一提我通常远离onclick =。 这是因为屏幕阅读器无法可靠地将onclicks注册为实际的click事件。

因此,如果您有兴趣...这是执行此操作的安全方法。

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。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM