首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内容脚本是在同一个孤立的世界中运行,还是在单独的孤立世界中运行?

内容脚本是在同一个孤立的世界中运行,还是在单独的孤立世界中运行?
EN

Stack Overflow用户
提问于 2015-03-29 18:48:14
回答 1查看 812关注 0票数 4

我正在阅读Chrome文档,试图学习如何创建扩展,并且很难理解如何在内容脚本之间共享数据。

假设我有三个脚本与我的扩展捆绑在一起:

代码语言:javascript
复制
jquery.js
script1.js
script2.js

我需要script1.jsscript2.js来使用jQuery,每个脚本都需要能够读写全局变量ala window.foo = 'bar'

脚本还向事件驱动的DOM添加内容,因此只要选项卡打开,它们读取/写入的全局变量就需要持久。

例如,script1.js可能向页面添加一个按钮,单击该按钮运行一个在script1.js中定义的函数,该函数反过来设置一个全局变量,然后在script2.js中运行一个函数,该函数然后使用该变量(只是一个示例)。

内容脚本文档说:

但是,内容脚本也有一定的局限性。它们不能:

  • ..。
  • 使用由扩展页定义的变量或函数
  • 使用由网页或其他内容脚本定义的变量或函数

这是否意味着扩展的内容脚本不能相互交互,还是说来自不同扩展的内容脚本不能相互交互?

换句话说,所有扩展内容脚本是在同一个孤立的世界中运行,还是在单独的孤立世界中运行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-29 19:09:40

每个扩展和每个帧都有一个执行上下文。

如果在同一帧中注入多个脚本,它们将完全共享上下文(请参阅彼此的变量等)。

DOM在所有上下文中共享。它支持与自定义事件的跨上下文通信。

跨帧(或交叉选项卡)通信通常需要一个后台脚本作为消息或类似window.postMessage之类的代理。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29333350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档