2011-12-07 243 views
1

隔绝的世界(扩展JS和JS网页)之间的通信。如你所知,在Chrome扩展和网页js文件不能直接互相访问,他们在世界上孤立运行。在Chrome扩展

不过,我想访问某些功能的页面上,并从插件调用这些函数。

而且我不想让我自己的那些功能的版本。

我不知道这是否可能?希望了解所有的答案。

编辑:功能背景页上。它是一个浏览器动作扩展。

更多信息:基本上,我有它创建了一个选项卡,提交网址到页面的上下文菜单。但是,重新打开页面会使许多选项卡和打开很多页面需要时间。因此,如果页面的一个实例已经打开,我愿意直接从扩展中调用页面上的JavaScript函数。我有权访问该页面。

TL; DR:需要一种方法来从扩展中调用页面上的javascript函数(不在本地复制)。

+0

你能更具体地说明这些功能在哪里吗? background_pages,content_scripts,browser_action弹出窗口? – abraham

+0

它来自带有browser_action扩展类型的后台页面。更新了具体问题。 – Sina

+0

该页面是否需要在网页上运行扩展页面或页面?如果它是网页上的一个页面,您是否可以修改代码或者您是否无法控制从服务器返回的内容? – abraham

回答

3

假设你知道你要调用其功能页面的标签ID,您可以使用chrome.tabs.update(tabId, {url: 'javascript:functionNameHere()'});从您的扩展页。这是可行的,因为JavaScript:URLs是mapped以在主要(即页面,而非隔离)世界中执行脚本。

+0

完美的答案。尽管作为一名有经验的开发人员,我完全忘记了运行内联JS。感谢Mihai :) – Sina