只有按下按钮运行功能

问题描述:

我有一个脚本,检查图像,然后加载一个页面,如果它已被发现。只有按下按钮运行功能

我想附加到一个按钮的功能,以便它只检查按钮时按下,而不是页面加载。

<input type="button" id="ImgLoad" value="Check connection"> 

目前,页面在加载时重定向并且未附加到按钮按下。我很努力地看到我出了什么问题。

<script> 
networkdelay = window.setTimeout(function() 
{window.onclick=encaseimage()}, 1000); 
</script> 

<script> 
clickdelay = window.setTimeout(function(){window.onclick=autoc()}, 
1000); 
</script> 

<script> 

function encaseimage(){ 

function ImgLoad(myobj){ 
    var randomNum = Date.now() || new Date().getTime(); 
    var oImg=new Image; 
    oImg.src="http://192.168.8.1/images/ping2.jpg"+"?rand="+randomNum; 
    oImg.onload=function(){window.location.href = "/status.html";} 

} 



networkchecker = window.setInterval(function() 
{window.onclick=ImgLoad()},1000); 
} 
</script> 

如果你想加载按钮上的图像点击你需要附加到按钮点击事件。

 $("#ImgLoad").click(function(){ 
     var randomNum = Date.now() || new Date().getTime(); 
     var oImg=new Image; 
     oImg.src="http://192.168.8.1/images/ping2.jpg"+"?rand="+randomNum; 
     oImg.onload=function(){window.location.href = "/status.html";} 
    }); 

要调用,而不是传递函数引用的函数:

window.onclick=ImgLoad() 

应该是:

window.onclick=ImgLoad 

否则ImgLoad功能立即运行。

我应该说,加入onclickwindow可能不是最好的设计(取决于你在做什么)。通常情况下,你会查找button(可能是id),然后仅将一个点击处理程序附加到该特定button

在一个侧面说明,它看起来像其他window.onclick事件也被设置为调用函数的结果:

window.onclick=encaseimage()}, 1000); 

window.setTimeout(function(){window.onclick=autoc()}, 

你可能要回顾那些为好。 :)