質問

Firefoxのコードがいくつかあります。これは、ページ上の要素が特定のイベントハンドラー(この場合はオンクリック)で存在するかどうかを確認するために実行されます。 FF4が発表されて以来、私はns_error_not_availableを取得しており、要素の周りのxpcnativewrapperに関係していると推測しています。これが私が使用するコードです:


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

function recursivesearch(frames){for(var i = 0; i <frames.length; i ++){var elems = frames [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(/goonty wonderful/gim)!= null && elems [a] .getattribute( 'onclick')。toString()。match( /さようなら素晴らしい/gim).length> = 0)||(elems [a]!= null && elems [a] .onclick!= null && elems [a] .onclick.tostring()。マッチ(/goontye wonderful/ gim) } if(elem){fund = true;戻る; } 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( 'failed');

真ん中の長い列をお詫びしますが、ヌルの参照がないことを確認するのはうまくいきます。 FF 3.6ではこれがうまく機能するため、イベントに加えられた変更については何も見つけることができませんでした。イベントの割り当ては異なることがわかりましたが、イベントのプロパティを読むことについては言及していません。

役に立ちましたか?

解決

JavaScriptが実行されていたコンテキストは間違っていて、ウィンドウのドキュメントで実行する代わりにFirefoxWindow(イベントハンドラーにアクセスできなかった理由)で実行されていたことがわかります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top