2010-06-02 2 views
2
<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> 

Se comporte différemment dans IE et FF lorsque vous faites un clic droit sur la zone div. Dans ff display_short sera appelé pour evry 1 sec eventhough vous ne libérez pas le clic droit, mais dans IE, il n'appellera pas display_short si vous ne relâchez pas le clic droit.fonction de rappel définie par JS settimeout ne fonctionne pas dans IE8

Mais je m'attends à ce que IE appelle call_short toutes les 1 s si vous ne le faites pas aussi. Y a-t-il une solution pour cela?

+0

Il fait la même chose pour moi dans les deux navigateurs. 'oncontextmenu' ne se déclenche que sur la libération du bouton droit, et non sur. Votre utilisation de 'clearTimeout()' est sans signification car vous ne passez pas dans un descripteur de timer (retourné par la fonction 'setTimeout'); dans tous les cas, si le délai d'attente a déjà été déclenché, il n'a pas besoin d'être effacé. – bobince

Répondre

0

var i; i = 0; boucle de fonction() { i = i + 1; alert (chaîne (i)); setTimeout ("loop()", 1000); } setTimeout ("loop()", 1000);

bonjour

S'il vous plaît essayez le code ci-dessus dans IE8 il ne donnera pas un message d'alerte jusqu'à ce que vous ne relâchez le clic droit.

Mais dans Firefox, il donnera un message d'alerte même si vous ne relâchez pas le clic droit.

Je veux la fonctionnalité firefox dans IE8.

Questions connexes