firefox - 网页脚本与内容脚本和 main.js(Add on code) 脚本之间的通信

  显示原文与译文双语对照的内容
0 0

这个问题已经有了如下答案:

更新: 抱歉,本示例工作正常,在我的完整源代码中找到了一个小 Bug 。 but i somebody know know,then me web,then answer web web web web web web web web web web web web web web 。


我无法找到如何正确构建以下基本通信:

页脚本-> 内容脚本-> add-on 脚本

反之亦然

add-on 脚本-> 内容脚本-> 页脚本

enter image description here

请注意,我理解页面脚本为原始网页脚本,它不在沙箱中。 页面脚本来自网页标题:


<head>
<script type="text/javascript" src="http://www.domain.com/script.js"></script>
</head>

add-on 脚本 main.js 和 **content scrip**t是来自PageMod的contentScriptFile

这就是我知道的。

我已经尝试过了,但它不工作:

main.js add-on 脚本:


 pageMod.PageMod({
 include:"*",
 contentScriptFile: self.data.url("content.js"),
 contentScriptWhen: 'ready',
 onAttach: function(worker) { 

 worker.port.on("message_from_content_script", function(data) { 
 worker.port.emit("message_to_page_script",mainStorage);
 });


 },
 attachTo: ["existing","top","frame"]
 });

内容脚本:


document.addEventListener('DOMContentLoaded', function () { 


 self.port.emit("message_from_content_script","some text");


});

正如你所看到的,仅仅在内容脚本和 add-on 脚本之间进行了一个通信,但是它并不工作。 请有人给我展示一个如何实现的示例:

页脚本-> 内容脚本-> add-on 脚本

反之亦然

add-on 脚本-> 内容脚本-> 页脚本

时间: 原作者:

...