JS settimeout设置的回调函数在IE8中不起作用

时间:2010-06-02 10:13:51

标签: javascript

<html>  
 <head>  
 <script>  
 function addEvent( obj, type, fn ) {  

   if ( obj.attachEvent ) {  

     obj['e'+type+fn] = fn;  

     obj[type+fn] = function(){obj['e'+type+fn]( window.event );}  

     obj.attachEvent( 'on'+type, obj[type+fn] );  

   } else 

     obj.addEventListener( type, fn, false );  

 }  

 </script>  

 </head>  

 <body>  

 <!-- HTML for example event goes here -->  

 <div id="mydiv" style="border: 1px solid black; width: 100px; height: 100px; margin-top: 10px;"></div>  

 <script>  

 // Script for example event goes here  

 addEvent(document.getElementById('mydiv'), 'contextmenu', function(event) {  
     display_short('right-clicked (contextmenu)');  
 });  

 function display_short(str)  
 {  
     clearTimeout();  
     document.getElementById('mydiv').innerHTML = str;  
     if (str != '')  
         alert("hello");
         setTimeout("display_short('abcd')", 1000);  

 }  
 </script>  
 </body>  
 </html> 

右键单击div区域时,在IE和FF中表现不同。在ff display_short将被调用evry 1秒,尽管你没有发布右键单击,但在IE中,如果你不发布右击,它将不会调用display_short。

但我希望在IE中它应该每1秒调用一次display_short,如果你也不释放的话。 对此有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

 var i;   i = 0;   函数循环()   {     i = i + 1;     警报(字符串(I));    的setTimeout( “循环()”,1000);   }   的setTimeout( “循环()”,1000);

你好

请在IE8中尝试以上代码,在您不发布右键单击之前,它不会发出警告消息。

但是在Firefox中,即使您没有发布右键,也会发出提示信息。

我想在IE8中使用firefox功能。