Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用dispatchEvent的加载项SDK不会将事件从内容脚本发送到页面_Javascript_Firefox_Javascript Events_Dispatchevent_Firefox Addon Sdk - Fatal编程技术网

Javascript 调用dispatchEvent的加载项SDK不会将事件从内容脚本发送到页面

Javascript 调用dispatchEvent的加载项SDK不会将事件从内容脚本发送到页面,javascript,firefox,javascript-events,dispatchevent,firefox-addon-sdk,Javascript,Firefox,Javascript Events,Dispatchevent,Firefox Addon Sdk,您好,我有一个简单的firefox扩展(基于附加SDK)和pageMod。 pageMod向页面注入一些脚本,该页面调用一个函数 function dispatchEvent(name, data){ try { data = data || {}; // passing some data through html element document.getElementById('MyDiv').innerText = JSON.stri

您好,我有一个简单的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");
    }
});
如果我通过firebug控制台运行contentScript代码,它就会工作。但我需要从contentScript发送事件


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

我花时间将您的问题转换为测试用例,它对我有效:


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

如果您将
innerText
(仅限MSIE)替换为
textContent
,数据设置是否正确?乍一看,我没有发现你的代码有任何问题,它应该可以工作。数据设置正确。事件调度存在问题。事实上,页面上的事件侦听器不会捕获从内容脚本发送的事件。它应该-明确允许从受信任代码向不受信任代码发送事件。您确定页面上的事件侦听器已正确注册吗?如果您从页面本身发送一个事件,它会被接收吗?是的,我在上面写到,如果我从firebug控制台运行contentScript代码,它会正常工作。