0

私は単純な Firefox 拡張機能 (アドオン SDK に基づく) を持っていpageModます。 pageModページにスクリプトを挿入し、1 つの関数を呼び出します。

function dispatchEvent(name, data){
    try {
        data = data || {};
        // passing some data through html element
        document.getElementById('MyDiv').innerText = JSON.stringify(data);
        var evt = document.createEvent('Event');
        evt.initEvent(name.toString(), true, true);
        if(document.getElementById('MyDiv').dispatchEvent(evt))
            console.log("Dispatch event: "+name+" data: "+JSON.stringify(data));
    } catch (e) {
        console.log("Error:" + e);
    }
}
dispatchEvent("MyEvent", {});

Web ページには、イベント リスナーがあり、MyDiv.addEventListener(...). 問題は、挿入されたスクリプトがページにイベントをディスパッチしないことです。関数は true を返しますが、dispatchEvent何も起こりません。これが私のpageModコードです:

var myMod = pageMod.PageMod({
    include: ["http://localhost/mysite/*"],
    contentScriptFile: [data.url("js/script.js")],
    contentScriptWhen: "end",
    onAttach: function onAttach(worker) {
          console.log("CS injected");
    }
});

contentScriptFirebug コンソールを介してコードを実行すると機能しますが、からイベントをディスパッチする必要がありますcontentScript

PSunsafeWindow.documentドキュメントの代わりに使用しようとしましたが、jQueryイベント/イベントリスナーを使用しましたが、どちらも機能していません。

4

1 に答える 1

1

私はあなたの質問をテストケースに変換するのに時間がかかりました、そしてそれは私のために働きます:https ://builder.addons.mozilla.org/addon/1018586/revision/13/

次回は完全なテストケースを提供してください。問題は、考えているコードの一部にないことが多いためです。

于 2011-10-01T15:06:09.673 に答える