Javascript 铬合金/FF中的竞争条件
早些时候,我提交了一个线程,试图实现以下atdmt.com像素,点击链接即可启动:Javascript 铬合金/FF中的竞争条件,javascript,html,onclick,Javascript,Html,Onclick,早些时候,我提交了一个线程,试图实现以下atdmt.com像素,点击链接即可启动: <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> 像素是用于记录系统中活动的1x1图
<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>
像素是用于记录系统中活动的1x1图像。这适用于IE,但不适用于Chrome和Firefox。我认为登录页面URL(google.com)加载得太快,图像(sact.atdmt.com)没有足够的机会加载。我正在使用ChromeDevTools/Fiddler检查标签是否触发
有人提出了以下解决方案:
<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>
但这并不能解析实际的URL(尽管像素会激发,但当您单击链接时不会发生任何事情)
另一个用户建议使用eventlistener而不是onclick属性,但当我单击链接时,这仍然不会触发像素
<script>
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);
</script>
<a href="http://www.google.com/" id="TheExampleLink">test</a>
函数imageClickHandler(){
var-img1;
var img1=新图像();
img1.src=http://sact.atdmt.com/action/adofat_ImageTest27_1';
img1.高度=1';
img1.width='1';
}//端函数
document.getElementByID(“TheExampleLink”).addEventListener(“单击”,imageClickHandler,false);
理想情况下,像素(jact.atdmt.com)应该会熄灭,然后我应该被带到。。。但是,由于我前面提到的竞争条件,像素并不总是被激发
对于如何解决这个问题,有什么建议吗
谢谢,在您上次引用的建议中 试试这个:
setTimeOut(imageClickHandler(), 0);
如果这不起作用
试试这个-
<script>
function imageClickHandler(){
var img1;
var img1=new Image();
img1.src='http://sact.atdmt.com/action/adofat_ImageTest27_1';
img1.height='1';
img1.width='1';
setTimeout(function(){window.location.href='www.google.com'},5000);
}//end function
document.getElementByID("TheExampleLink").addEventListener("click",imageClickHandler,false);
函数imageClickHandler(){
var-img1;
var img1=新图像();
img1.src=http://sact.atdmt.com/action/adofat_ImageTest27_1';
img1.高度=1';
img1.width='1';
setTimeout(函数(){window.location.href='www.google.com'},5000);
}//端函数
document.getElementByID(“TheExampleLink”).addEventListener(“单击”,imageClickHandler,false);
您可能可以通过一个同步ajax请求来实现这一点(尽管您必须遵守同源策略)。0毫秒的setTimeout相当于java中的yield方法。它基本上是让其他事情发生在ExecutionGinner听说过时间切片模型之前有时候,要知道正确的解决方法需要更多的时间;-)哇!你是无所不知的先生。。荣誉:P
<a href="javascript:void(0)" id="TheExampleLink">test</a>