2

すべてのタブとウィンドウからアクセスできる単一の XMPP チャット接続を作成する Firefox 拡張機能を構築しているので、これを実現する唯一の方法は、javascript モジュールで接続を作成し、すべてのブラウザー ウィンドウに含めることだと考えました。間違っていたら訂正...

編集:sdk を使用せずに、xul オーバーレイを使用して従来の拡張機能を構築し、それらのモジュールについて話しています: https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules

そこで、Strophe.js を js モジュールにコピーしました。Strophe.js は次のようなコードを使用します。

/*_Private_ function that creates a dummy XML DOM document to serve as
 *  an element and text node generator.
 */

[---]

if (document.implementation.createDocument === undefined) {
    doc = this._getIEXmlDom();
    doc.appendChild(doc.createElement('strophe'));
} else {
    doc = document.implementation
        .createDocument('jabber:client', 'strophe', null);
}

その後、doc.createElement() を使用して xml(または html?) ノードを作成します。

すべて正常に機能しましたが、モジュールで「エラー: ReferenceError: ドキュメントが定義されていません」というエラーが発生しました。これを回避する方法は?

(正確なコードのより大きな部分: http://pastebin.com/R64gYiKC )

4

2 に答える 2

0

コンテンツ スクリプトをワーカー ページに正しく添付していないようです。tabs.attach() などを使用して、1 つ以上のコンテンツ スクリプトをワーカー ページに添付していることを確認してください (こちらのドキュメントを参照してください)

そうしないと、DOM がロードされるのを待つ必要があり、ページ全体がロードされるのを待つ必要があります。

window.onload = function ()
{
Javascript code goes here
}

少なくともその問題を診断する必要があります (上記が本番環境で使用するのに最適な方法ではない場合でも)。しかし、あえて言うなら、あなたはコンテンツ スクリプトを添付していないと思います。

于 2013-08-05T18:11:50.703 に答える