内容脚本是在同一个孤立的世界中运行,还是在不同的孤立世界中运行
Do content scripts run in the same isolated world, or in separate isolated worlds?
我正在阅读Chrome文档,试图学习如何创建扩展,并努力理解如何在内容脚本之间共享数据。
假设我有三个脚本与我的扩展捆绑在一起:
jquery.js
script1.js
script2.js
我需要script1.js
和script2.js
来使用jQuery,并且每个脚本都需要能够读写全局变量ala window.foo = 'bar'
。
脚本还将内容添加到事件驱动的DOM中,因此只要选项卡打开,它们读取/写入的全局变量就需要是持久的。
例如,script1.js
可能会在页面中添加一个按钮,当单击该按钮时,它会运行script1.js
中定义的函数,然后设置一个全局变量,然后运行script2.js
中的一个函数,然后使用该变量(只是一个示例)。
内容脚本文档说:
但是,内容脚本有一些局限性。他们不能:
- 使用由其扩展页面定义的变量或函数
- 使用由网页或其他内容脚本定义的变量或函数
这是否意味着扩展的内容脚本根本不能相互交互,或者是说不同扩展的内容剧本不能相互交互?
换句话说,所有扩展内容脚本是在同一个孤立的世界中运行,还是在不同的孤立世界中运行?
每个扩展、每个帧都有一个执行上下文。
如果在同一框架中注入多个脚本,它们将完全共享上下文(参见彼此的变量等)
DOM在所有上下文中共享。这实现了与自定义事件的跨上下文通信。
跨帧(或跨标签)通信通常需要一个后台脚本作为消息或类似window.postMessage
的代理。
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何根据时间运行不同的脚本
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 将文本框链接到由按钮运行的javascript公式
- 为什么不是't运行此Javascript的Chrome
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何使用JS/nightwatchjs并行运行多个测试
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- 内容脚本是在同一个孤立的世界中运行,还是在不同的孤立世界中运行
- 在“孤立的世界”(chrome)中运行javascript