J'ai le javascript suivant dans MSIE:
setTimeout(myFunction, 1000, param );
cela semble fonctionner dans tous les navigateurs sauf Internet Explorer. le param ne vient tout simplement pas d'être transmis à la fonction. en regardant le débogueur, il est indéfini.
param
dans Internet Explorer spécifie si le code dans myFunction
est JScript, JavaScript ou VBscript Voir aussi: MSDN. Il ne se comporte pas comme les autres navigateurs.
Ce qui suit fonctionnera:
setTimeout(function() {
myFunction(param);
}, 1000);
La ligne précédente ne reproduit pas exactement setTimeout
dans Firefox, etc. Pour passer une variable non affectée par une mise à jour ultérieure de la variable param
, utilisez:
setTimeout( (function(param) {
return function() {
myFunction(param);
};
})(param) , 1000);
Internet Explorer ne vous permet pas de passer de tels paramètres. Vous devrez le faire explicitement à partir de la fonction de rappel:
setTimeout(function(){
myFunction(param);
}, 1000);
Citation de MDN :
Notez que la transmission de paramètres supplémentaires à la fonction dans la première syntaxe ne fonctionne pas dans Internet Explorer.
Jetez un coup d’œil à http://www.makemineatriple.com/2007/10/passing-parameters-to-a-function-called-with-settimeout
On dirait que vous aurez besoin de quelque chose comme ça:
setTimeout(function(){ myFunction(param) }, 1000);
Ce n'est pas un paramètre. Apparemment, ce dernier argument dénote le langage de script.
Utilisez plutôt une fonction anonyme:
setTimeout(function() {
myFunction(param);
}, 1000);
Utilisez une fonction anonyme:
setTimeout(function() { myFunction(param) }, 1000);
Que dis-tu de ça:
setTimeout(function(){
myFunction(param);
}, 1000);
vous pouvez utiliser la fermeture:
setTimeout(function(){myFunction(param)}, 1000);