我的Add-on SDK内容脚本如何与网站页面脚本交互?

时间:2014-06-24 04:01:22

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

在我的SDK插件中,我想

  • 在页面脚本中调用函数
  • 导出,读取(获取),编写(设置)或操作页面脚本中的某些变量或属性
  • 将新函数导出或覆盖页面脚本中的现有函数
  • 或将自定义事件发布到页面脚本可以侦听的页面。

我的附加SDK内容脚本如何与网站通信?

1 个答案:

答案 0 :(得分:3)

有许多方法可以与页面脚本进行交互,其中最常见的方法包含在官方文档中,包括问题中列出的所有方法。

请阅读"Interacting with page scripts"

但是,应该指出的是,以安全的方式与页面脚本交互可能很困难。请特别注意unsafeWindow被称为不安全的原因是:

  

小心使用unsafeWindow:你不能依赖于你所期望的任何属性或功能。其中任何一个,甚至是setter和getter,都可以通过页面脚本重新定义。除非你信任这个页面,否则不要使用它,即使这样也要小心。

     

此外,unsafeWindow不是受支持的API,因此可以在SDK的未来版本中删除或更改。

unsafeWindow读取数据或执行其功能是安全的,因为它不能直接导致另一个(您的内容脚本)安全上下文中的代码执行。 Javascript引擎隔间将确保这一点。

但是,您绝不能信任来自网站的数据。 总是期望代码抛出,拒绝服务你的意外无限循环或类似。永远不要在内容脚本的上下文中明确地或隐含地eval使用代码。

此外,永远不要认为你真的可以信任一个网站,即使它是你自己的网站。网站可以被入侵(黑客入侵),所有者可以在未来进行更改,数据可以在途中进行更改(活跃的中间人攻击),或者其他附加组件可以对其进行修改等。