2009-05-07 2 views
0

私はFF 2.0の拡張(チュートリアルの第二部this urlである)であるXULでは、ブラウザタグの読み込みが完了したことをどのように知ることができますか?

重要である主なものは、それがで

<iframe id="contentview" src="http://www.ibm.com/developerworks/web" flex="2"/> 

を使用していることであるthis tutorialに基づいてFirefoxの拡張機能を開発していますバックエンドのコード、GOボタンをクリックすると、この問題が発生した:

contentview.contentDocument.location.href = urlbox.value; 

//Use Firefox XPath to get the raw text of the document 
var doctext = contentview.contentDocument.evaluate(
    "string(.)", document, null, XPathResult.STRING_TYPE, null).stringValue; 

私は、XPathとエラーが出るが、それは私の質問はありません。私がFF 3.0で持っている問題は、contentDocumentの値がhrefの変更によって読み込まれたものではなく、読み込まれた古いサイトを参照していることです。

私の質問は、類似のウィンドウを作成するにはどうすればいいですか?ロードされたドキュメントが完成したときに誰かに通知して、そのDOMにアクセスできますか?

答えて

2

更新日: は、まずあなたは、あなたがあなたのイベントハンドラ名で「DomLoadedEventHandler」を置き換えるiframe要素

window.addEventListener("load",Listen,false); 
function Listen() 
{ 
    var frame = document.getElementById("contentview"); 
    frame.addEventListener("DOMContentLoaded", DomLoadedEventHandler, true);   
} 

    function DomLoadedEventHandler() { 
    var frame = document.getElementById("contentview"); 
    alert(frame.contentDocument.location.href); 
    } 

にイベントリスナーを追加し、ウィンドウのloadイベントを処理する必要があります。私はあなたが

Firefoxの拡張機能について http://developer.mozilla.com

+0

すべてを学ぶためにはMozillaの公式サイトを見てみることをお勧めします

は、しかし、完全に動作しません。 GOをクリックすると、コードが呼び出されません(警告は表示されません)。その後、エラーコンソールを見ると、初めてGOをクリックすると何も起こりません。 2回目、私は "doc.locationは未定義です"と思う。 元の拡張コードと同じことが起こっていると思います。以前に読み込まれたページで呼び出されますか?ロードされているものではありませんか? – Tominator

+0

私は私の答えを更新しました、今すぐお試しください –

+0

まだ100%ではありませんが、非常に近いです!私はあなたのコードをchange_url関数と同じレベルに(内部ではなく)置きました。その後、もちろんchange_url関数内のそのセクションに関連するすべてのコードをコメントしました。 「doc」パラメータはDocument型ではなくEvent型です。もっとgetElementByIdマジック? – Tominator

関連する問題