Domanda

Ho del codice per Firefox che funziona per verificare se esiste un elemento sulla pagina con un determinato gestore di eventi, in questo caso OnClick. Da quando è uscito FF4 ho ricevuto ns_error_not_available e immagino che abbia a che fare con XPCNativeWrapper attorno agli elementi. Ecco il codice che uso:


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;
    }
}

funzione ricorsiveIndearch (frame) {for (var i = 0; i <frame.length; i ++) {var elems = frame [i] .document.getElementsbytagname ('td'); for (a = 0; a <elems.length; a ++) {if (((Elems [a]! = null && elems [a] .hasattributes () == true && elems [a] .getTribute ('onclick') != null && elems[a].getAttribute('onclick').toString().match(/Goodbye Wonderful/gim) != null && elems[a].getAttribute('onclick').toString().match( /Addio meraviglioso/gim) .length> = 0) || (Elems [a]! = Null && elems [a] .onclick! = Null && elems [a] .onclick.tostring (). Match (/Goodbye Wonderful/Wonderful/Wonderful/Wonderful/Wonderful/ gim)! = null && elems [a] .onclick.toString (). match (/addio meraviglioso/gim) .length> = 0))) Elem = Elems [a]; } if (Elem) {trovato = true; Restituzione; } else {if (frame [i] .Frames.Length> 0) {RecorsiveSearch (frame [i] .Frames); }}}} if (! Elem && window.frames.length> 0) {ricorsiveSearch (window.frames); } if (Elem! = null) {print ('## risultato ##' + Elem.taGname); } else {print ('non riuscito');

Mi scuso per la lunga linea nel mezzo, ma fa bene assicurarsi che non ci siano riferimenti nulli. Non sono stato in grado di trovare nulla sulle modifiche apportate agli eventi in quanto funziona bene in FF 3.6. Ho scoperto che l'assegnazione di eventi è diverso, ma nessuna menzione delle proprietà degli eventi di lettura.

È stato utile?

Soluzione

Si scopre che il contesto in cui il JavaScript stava in esecuzione era errato e era in esecuzione sul Firefoxwindow (motivo per cui non poteva accedere ai gestori di eventi) invece di correre sul documento della finestra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top