<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?
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