是否可以从弹出窗口触发内容脚本中的行为
Is it possible to trigger behavior in the content script from the popup?
当前,我正在使用消息传递从我的contentscript中发送对localStorage中数据的请求,我对此没有任何问题,内容脚本正在按预期工作。
你能从另一个方向做这个吗?
我在内容脚本中有一个对象,它有一个名为".apply()"的方法,我想在用户单击选项时运行它。
我试着在内容脚本中做一个监听器,如下所示:
var myLinker = new Linker();
chrome.extension.onRequest.addListener(function(request) {
if (request.method == "apply")
{
myLinker.apply("nothing");
alert("applied");
}
else
; //Do nothing
并像这样向它发送请求:
chrome.extension.sendRequest({method: "apply"}, function(){
alert("Tried to request");
});
我知道这有点像黑客,但这是我唯一能想到的,而且它甚至不起作用=/
有办法做到这一点吗?
我很确定我可以从弹出窗口向页面注入新代码(我想我看到了一个api函数),然后运行一些东西,但这会占用更多内存,而且感觉这是一种糟糕的方法,因为你基本上会有两次完全相同的代码。
要从扩展向内容脚本发送消息,请使用chrome.tabs.sendMessage
而不是chrome.extension.sendRequest
。
由于sendRequest
在Chrome 20中已被onMessage
取代,因此sendRequest
不再有官方文档。chrome.tabs.sendMessage
的文档可在此处找到。请注意,这些事件不能混合使用,请使用*Request
或*Message
。
是的,您可以使用这个:http://developer.chrome.com/extensions/tabs.html#method-sendMessage
内容脚本位于页面的DOM中。在Chrome中打开的每个页面都有一个与之相关的选项卡ID——http://developer.chrome.com/extensions/tabs.html#type-选项卡选项卡
假设您想将{方法:"应用"}发送到刚刚在新选项卡中打开的页面:
chrome.tabs.onCreated.addListener(function(tab) {
chrome.tabs.sendMessage(tab.id, { method: "apply" });
});
还有其他事件/方法可以获得你想要发送消息的特定选项卡。我认为有一个名为getCurrent的方法可以发送到当前选择的选项卡,请查看文档。
- 如何准确执行加载脚本&退出弹出窗口
- Chrome扩展:加载窗口后执行脚本
- 是否可以从弹出窗口触发内容脚本中的行为
- 在后台运行的脚本在出现弹出窗口时会停止
- 谷歌应用脚本打开新窗口
- 如何在运行php脚本后保持弹出窗口打开
- 鼠标悬停在脚本上时使用居中图像弹出窗口
- 用于从剪贴板中的表自动填充活动浏览器窗口中的字段的脚本
- 如果在外部单击,则隐藏弹出窗口.为什么我的脚本没有'不起作用
- InDesign CS5脚本:如何在“n”秒后打开和关闭弹出窗口
- 如何在Chrome扩展弹出窗口和内容脚本之间发送消息
- 多个独特的弹出窗口,带有JPopUp脚本
- 运行谷歌脚本网络应用后关闭窗口
- 从 vb.net 关闭脚本弹出窗口
- Photoshop 脚本 - 更新窗口中的进度条
- Chrome“脚本只能关闭由它打开的窗口”错误
- 当窗口大小小于 x 时使脚本停止
- 查找负责打开新窗口的脚本
- 如何向脚本窗口添加滚动速度
- 这个网站在ie中使用脚本窗口错误