Inline gestionnaires d'événements et les fonctions anonymes
J'ai besoin d'inclure de manière dynamique et exécuter un script dans une page. Je suis à l'aide d'une image à l'événement onload pour cela:
<img src="blank.gif" onload="DoIt" />
La fonction DoIt ressemble à ça (juste fait de cet exemple):
this.onload=' ';this.src='image.jpg';
Je n'ai pas de contrôle sur la page elle-même (je ne le contrôle de la chaîne HTML de la page de garde), j'ai donc besoin d'inclure la fonction DoIt explicitement dans le balisage.
J'ai essayé d'utiliser une fonction anonyme, mais il ne fonctionne pas:
<img src="blank.gif" onload="function(){this.onload=' ';this.src='image.jpg';}" />
Devrais-je écrire le script inline, comme ceci:
<img src="blank.gif" onload="this.onload=' ';this.src='image.jpg';" />
Et dans ce cas il y a des restrictions (par exemple, le script de longueur)?
Merci pour votre aide!
OriginalL'auteur Christophe | 2010-12-03
Vous devez vous connecter pour publier un commentaire.
La
this
ne fonctionne pas à l'intérieur de la fonction, puisque la fonction est appelée par lewindow
objet, donc lethis
fera référence àwindow
.Si vous souhaitez envelopper votre code à l'intérieur d'une fonction, vous devez envelopper cette fonction, l'appeler avec la
this
ensemble de l'élément ou la passer lethis
en tant que paramètre:Pourtant, ce n'est pas vraiment de sens pour moi:
Pensez-vous que vous avez le contrôle sur les balises img? Si vous pouvez produire abritary HTML, alors pourquoi ne pas simplement mettre quelque chose dans un `script' tag?
Mise à jour
Avec un bloc de script, vous pouvez déclarer votre fonction de y, et puis il suffit de l'appeler dans l'événement onload.
Maintenant, vous avez besoin d'une seule fonction pour de nombreuses images.
Et si vous devez vraiment faire de la fantaisie, vous pouvez configurer votre balise de script pour tirer en jQuery ou toute autre bibliothèque.
Si vous avez besoin d'un grand nombre de ces gestionnaires de jQuery pourrait faire le travail.
Encore je demande à mon auto quand vous avez le plein contrôle sur le code HTML pourquoi ne pas utiliser une bibliothèque en premier lieu? 🙂
Dang, stupide abattement supprimé la balise script.
Eh bien, ma compréhension est que si j'utilise une balise de script, le code sera ajouté à la page, mais pas exécuté. Le but de l'img onload est de déclencher l'exécution.
Mise à jour de ma réponse.
ok, l'a obtenu. La balise img est encore nécessaire pour déclencher l'exécution. Je n'ai pas le plein contrôle sur le code HTML, je viens d'offrir HTML chaînes à mes clients (il peut y avoir plusieurs pages Web, et de changer au fil du temps). Et une bibliothèque peut-être trop pour mes besoins simples.
OriginalL'auteur Ivo Wetzel
Essayer:
grâce à cocher celui-ci fonctionne!
Exemple Simple. +1
OriginalL'auteur David Tang