Sha*_*a40 6 javascript firefox-addon firefox-addon-sdk
我是Firefox插件开发的新手.
我需要一种方法从firefox插件中的main.js调用contentcript函数.
我在每个开放的网页上都注入了contentcript xyz.js.
我想从我的main.js中调用我的脚本xyz.js中的函数abc(),点击我在导航工具栏中的一个按钮.
以下是我的代码.
Main.js
..
function addToolbarButton() {
var document = mediator.getMostRecentWindow('navigator:browser').document;
var navBar = document.getElementById('nav-bar');
if (!navBar) {
return;
}
var btn = document.createElement('toolbarbutton');
btn.setAttribute('id', 'mybutton-id');
btn.setAttribute('type', 'button');
btn.setAttribute('class', 'toolbarbutton-1');
btn.setAttribute('image', data.url('icon_16.png'));
btn.setAttribute('orient', 'vertical');
btn.setAttribute('label', 'Test');
btn.addEventListener('click', function() {
tabs.activeTab.attach({
//
abc() //here i want to call the function present in my contentscript
//
});
}, false)
navBar.appendChild(btn);
}
..
Run Code Online (Sandbox Code Playgroud)
xyz.js
..
function abc(){
//here is my code logic
}
..
Run Code Online (Sandbox Code Playgroud)
我开始知道消息传递是这样做但无法在Firefox中实现.
请帮帮我,我被困了.
您不能直接调用该函数,您需要向内容脚本发送消息。意思是这样的:
var worker = tabs.activeTab.attach({
...
});
// Some time later
worker.postMessage("doABC");
Run Code Online (Sandbox Code Playgroud)
在内容脚本中:
self.on("message", function(message) {
if (message == "doABC")
abc();
});
Run Code Online (Sandbox Code Playgroud)
有关与内容脚本通信的更多信息,请参阅文档。
| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |