Firefox插件sdk选项卡脚本与页面mod脚本对话

时间:2014-12-18 15:59:20

标签: firefox firefox-addon firefox-addon-sdk

main.js我打开一个标签并附加一个带有page-mod的脚本。正在打开它的html文件有一堆常规包含。

有两个问题。

  1. 来自页面mod的脚本在加载其他脚本之后才会附加,并且
  2. 常规脚本无法访问使用page mod附加的脚本中定义的变量。

2 个答案:

答案 0 :(得分:0)

你必须发送消息。

<强>直接

在你的page-mod中,发送一条消息:

页-mod.js

window.postMessage(projectUniqueId + '|' + message, domain);

如果您的网页需要与所有域(作为插件)一起使用,您可能需要&#39; *&#39;作为域名。

制表attach.js

window.addEventListener('message',function(event){
  var words = event.data.split('|');
  if (words[0] == projectUniqueId){
    handle(words[1]);
  }          
});

答案 1 :(得分:0)

  

在加载其他脚本后,页面mod中的脚本才会被附加,

在加载DOM内容后,在页面模型构造函数中指定contentScriptWhen: 'ready'应该&#34; [l] oad内容脚本,对应于DOMContentLoaded事件&#34;

  

常规脚本无法访问使用页面模式附加的脚本中定义的变量。

看看Expose objects to page scripts。你需要使用

var contentScriptObject = {"greeting" : "hello from add-on"};

unsafeWindow.clonedContentScriptObject = cloneInto(contentScriptObject, unsafeWindow);

在内容脚本中使对象可访问。