0

我有简单的 Firefox 扩展(基于附加 SDK)和pageMod. pageMod向页面注入一些脚本,该页面调用一个函数:

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", {});

在网页上我有事件监听器,通过MyDiv.addEventListener(...). 问题是注入的脚本不会向页面发送任何事件。该dispatchEvent函数返回 true,但没有任何反应。这是我的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");
    }
});

如果我contentScript通过 Firebug 控制台运行代码,它可以工作,但我需要从contentScript.

PS 我也尝试使用unsafeWindow.document而不是文档,并使用 jQuery 事件/事件侦听器,但它也不起作用。

4

1 回答 1

1

我花时间将您的问题转换为测试用例,它对我有用:https ://builder.addons.mozilla.org/addon/1018586/revision/13/

请下次提供完整的测试用例,因为问题通常不在于您认为的那段代码。

于 2011-10-01T15:06:09.673 回答