Question

J'ai du code pour Firefox qui s'exécute pour vérifier si un élément sur la page existe avec un certain gestionnaire d'événements, dans ce cas OnClick. Depuis que FF4 est sorti, je suis devenu NS_ERROR_NOT_AVAILABLE et je suppose que cela a à voir avec le XPCNativewrapper autour des éléments. Voici le code que j'utilise:


var elem = null;
var elems = doc.getElementsByTagName('td');
var firefoxWindow = window;
for (a = 0; a < elems.length; a++) {
    if (((elems[a] != null && elems[a].hasAttributes() == true && elems[a].getAttribute('onclick') != null && elems[a].getAttribute('onclick').toString().match(/Goodbye Wonderful/gim) != null && elems[a].getAttribute('onclick').toString().match(/Goodbye Wonderful/gim).length >= 0) || (elems[a] != null && elems[a].onclick != null && elems[a].onclick.toString().match(/Goodbye Wonderful/gim) != null && elems[a].onclick.toString().match(/Goodbye Wonderful/gim).length >= 0))) elem = elems[a];
}
var found = false;
var window = null;
for (var i = 0; i < firefoxWindow.frames.length; i++) {
    if (firefoxWindow.frames[i].toString().toLowerCase().indexOf('object window') > -1) {
        window = firefoxWindow.frames[i];
        break;
    }
}

fonction recursivesearch (frames) {for (var i = 0; i <frames.length; i ++) {var elems = trames [i] .Document.getElementsByTagName ('td'); for (a = 0; a <elems.length; a ++) {if (((elems [a]! = null && elems [a] .hasattributes () == true && elems [a] .getAttribute ('onClick') ! = null && elems [a] .getAttribute ('onclick'). toString (). Match (/ Goodbye Wonderful / gim)! = null && elems [a] .getAttribute ('onclick'). toString (). Match ( / Goodbye Wonderful / gim) .length> = 0) || (elems [a]! = Null && elems [a] .onclick! = Null && elems [a] .onclick.tostring (). Match (/ Goodbye Wonderful / gim)! = null && elems [a] .onclick.toString (). Match (/ Goodbye Wonderful / gim) .length> = 0))) elem = elems [a]; } if (elem) {find = true; revenir; } else {if (frames [i] .frames.length> 0) {recursivesearch (frames [i] .frames); }}}} if (! elem && window.frames.length> 0) {recursivesearch (window.frames); } if (elem! = null) {print ('## Result ##' + elem.tagname); } else {print ('échoué');

Je m'excuse pour la longue ligne au milieu, mais il fait bien de s'assurer qu'il n'y a pas de références nulles. Je n'ai rien pu trouver sur les modifications apportées aux événements, car cela fonctionne très bien dans FF 3.6. J'ai constaté que l'attribution d'événements est différente, mais aucune mention des propriétés des événements de lecture.

Était-ce utile?

La solution

Il s'avère que le contexte dans lequel le javascriptait était incorrect et fonctionnait sur Firefoxwindow (c'est pourquoi il n'a pas pu accéder aux gestionnaires d'événements) au lieu de fonctionner sur le document de la fenêtre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top