Firefox fenêtre“.l'événement n'est pas défini” erreur
J'ai ce script:
function postBackByObject(e) {
var o = window.event.srcElement || e.target;
if (o.tagName == "INPUT" && o.type == "checkbox") {
__doPostBack("", "");
}
}
- Je utiliser ce script avec onclick="postBackByObject();"
.
mais dans Firefox 21, j'obtiens cette erreur:
TypeError: fenêtre.l'événement n'est pas défini
quel est mon tort?
- Cochez cette...stackoverflow.com/questions/9813445/...
- pour les Url dans les commentaires, utilisez le format
[text](http://uri.com/)
texte
Vous devez vous connecter pour publier un commentaire.
C'est parce qu'il est.
window.event
est pour les anciennes versions d'IE.Typique de la façon de le faire est:
e||(e=x);
, ou d'échanger le=
et||
(mais c'est une ré-affectation, même si c'est déjà attribué).e is undefined
? Vous venez de définir dans la définition de la fonction...Vous attacher les évènements inline
onclick="postBackByObject();"
Essayer de passer
this
(la cible de l'événement) àonclick="postBackByObject(this);"
Modifier votre fonction pour gérer ce changement:
Une meilleure solution sera d'associer des événements à l'aide de
addEventListener
Si votre balise ressemble:
puis
Votre
postBackByObject
fonction reste inchangée lors de l'utilisation de cette approche.obj.addEventListener('click', postBackByObject);
?onclick='postBackByObject()'
présent? BTW, la première approche devrait fonctionner:onclick="postBackByObject(this);"
.<div id="TvCategories" onclick="postBackByObject();">
this
dans l'appel de méthode.<div id="TvCategories" onclick="postBackByObject(this);">
postBackByObject
. l'argument e se réfère à l'objet cible elle-même. J'ai mis à jour mon post avec la nouvelle fonction.postBackByObject
fonction, telle qu'elle est(ne retirez pas la première instruction).onclick="postBackByObject(this)"
ne fonctionne pas, maisonclick="postBackByObject(event)"
dans FireFox.Transmettre l'événement sur le
onClick
événement comme celui-ci:onclick="myCustomFunction(event);"
Il fonctionne et vous pouvez accéder à l'objet de l'événement!
this
au lieu deevent
va passer de l'objet au lieu de l'événementIl est possible de passer de l'objet événement dans la ligne de la déclaration:
Fixation de l'événement est une solution mais il y a une alternative qui pourrait être utile pour d'autres personnes confrontées au même problème, après une longue recherche, j'ai trouvé que:
De sorte que le problème se produit car
window.event
n'est pas reconnu par Firefox, et la solution est de passerevent
à la fonction, votre code sera :Et vous pouvez toujours l'appeler dans votre inline HTML passant
event
en tant que paramètre:Votre ligne
échoue sur tous les navigateurs sauf IE, car pour eux
windows.event
est undefnedLa bonne formulation serait :
Depuis compatible avec le standard des navigateurs de transmettre l'événement en tant que paramètre
e
etla cible à
e.target
dans IE,e
sera pas défini et que vous devez utiliserwindow.event.srcElement
Noter que les dernières versions de IE faire prendre en charge la norme de modèle.
Sur un plus générique remarque, lorsque vous essayez d'accéder à une valeur comme
a.b.c.d
puisa.b.c
doitêtre un objet défini d'autre, vous obtiendrez l'erreur
a.b.c undefined
.je ne suis pas sûr si la fenêtre.l'événement est pris en charge dans tous les navigateurs. Je pense que vous obtenez de l'événement dans la variable "e" de postBackByObject(e)