document.corps.la méthode addEventListener ne fonctionne pas
Je suis en train de travailler sur un écran de lecteur de projet et j'ai besoin d'obtenir le point sous le curseur. Pour ce faire dans Firefox, j'ai écrit une extension à laquelle mon lecteur d'écran se connecte via les sockets et obtient le texte. J'avais besoin d'obtenir l'élément courant sous le curseur et la fonction a bien fonctionné dans un exemple de page html écrit par moi-même (il n'y a pas de problème avec la fonction).
Mais quand je tente de joindre la fonction de mon fichier JS dans le prolongement, Il semble que la fonction qui est appelée par "document.corps.la méthode addEventListener('mouseover',mafonction(mEvent),false);" n'est jamais appelée.
Mais si je l'appelle
document.body.addEventListener('mouseover',function(mEvent){...},true);
mafonction est appelé.
Je suis nouveau sur le javascript, donc excusez-moi si c'est une question stupide, Mais pourquoi le
document.body.addEventListener('mouseover',function(mEvent){...},true);
ne fonctionne pas?
J'ai toujours apprécié votre belle aide et des idées. 🙂
OriginalL'auteur Luke | 2011-08-23
Vous devez vous connecter pour publier un commentaire.
Alors que ce n'est pas une réponse directe à votre question, j'espère que c'est utile quand même. À l'aide d'une extension pour un lecteur d'écran n'est pas nécessaire, en particulier, vous pourriez voulez pas mettre à jour l'extension régulièrement que l'interface utilisateur du navigateur changements. Firefox prend en charge un certain nombre d'Api d'accessibilité que vous pouvez utiliser directement à partir de votre application. Ces Api ont l'avantage d'être stable, une fois votre mise en œuvre est effectué, il doit continuer à travailler (comme je me souviens bien il y avait une seule occasion où Mozilla a cassé la compatibilité avec les lecteurs d'écran).
Que le libellé de la question: vous ne dites rien sur le contexte dans lequel ce code est en cours d'exécution. Normalement, les extensions d'exécuter du code dans leur XUL superposition de sens que le contexte est la fenêtre du navigateur, pas la page web. Ce qui expliquerait pourquoi ton code ne fonctionne pas (c'est un document XUL, pas de
document.body
). Tu veux sans doute dire de la fixation d'un écouteur d'événement à l'<tabbrowser>
élément où les pages web sont chargés:gBrowser.addEventListener(...)
. Note: Si vous avez vraiment envie d'attraper tous les événements sur un document XUL, vous devez enregistrer un écouteur d'événement surdocument
oudocument.documentElement
.Btw, vous pouvez voir les messages d'erreur liées à des extensions dans le Console D'Erreur (l'article que j'ai link, explique comment l'activer dans le courant Firefox versions).
OriginalL'auteur Wladimir Palant
J'ai aussi eu le même problème et maintenant résolu. Après la fermeture de la balise, essayez d'ajouter un
document.body.addEventListener
. Analyseur de ne pas le reconnaître objet DOM de la "addEventListener" événement parce que la balise HTML de l'objet DOM n'est pas fermé.Reportez-vous à la suite. Il fonctionne bien.
<body>
comme ça?Oui, ne pas mettre
<script>
balises en dehors de la<body>
ou<head>
, il ne sera pas valider: stackoverflow.com/a/3037769/1824444OriginalL'auteur user2347127
Je soupçonne que le document n'est pas encore prêt, il n'y a rien à se lier à. Essayez d'ajouter une
onload="addMyEventListener();"
à votre<body>
et voir si cela résout des choses. Je ne sais pas la bonne façon de le temps les choses, alors peut-être que quelqu'un d'autre peut le carillon dans la meilleure façon de gérer cela.Je suis dans le train ne peut donc pas le chercher pour vous. Faire une recherche sur imitant jquery document.prêt. Qu'est ce que vous voulez faire 8I pense.
OriginalL'auteur mrtsherman
Il y a peut être d'autres questions ici, mais la syntaxe de votre
addEventListener
appel est erroné et peut être à l'origine du problème vous voyez:document.body.addEventListener('mouseover',myfunc(mEvent),false);
est réellement appeler "mafonction" dans le même temps, vous êtes en invoquantaddEventListener
et de son passage en tant que second paramètre.Devrait plutôt l'appeler de cette façon:
document.body.addEventListener('mouseover',function() { myfunc(mEvent) },false);
OK, c'est correct puis - je vous recommande de le corriger dans votre question, juste pour clarifier.
Je vous suggère d'essayer de nouveau avec votre correction de la question est très confus maintenant. Je pense que vous avez changé la mauvaise ligne de code.
OriginalL'auteur
suivantes Wladimir Palant du conseiller, le suivi est de travail:
OriginalL'auteur Hocker Fun