javascript - 是否可以从弹出窗口触发内容脚本中的行为?

标签 javascript google-chrome-extension

目前我正在使用消息传递从我的 contentscript 发送请求以获取 localStorage 中的数据,我对此没有任何问题,content script 正在按预期工作。

你能换个方向吗?

我有一个存在于内容脚本中的对象,它有一个名为“.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");
});

我知道这有点 hack,但这是我唯一能想到的,它甚至不起作用 =/

有办法吗?

我很确定我可以从弹出窗口中将新代码注入(inject)页面(我想我看到了一个用于此的 api 函数),然后运行东西,但这会占用更多内存并且感觉是一个糟糕的方法这样做,因为您基本上会有两次完全相同的代码。

最佳答案

要从扩展程序向内容脚本发送消息,请使用 chrome.tabs.sendMessage 而不是 chrome.extension.sendRequest

因为 sendRequest has been superseded by onMessage in Chrome 20sendRequest 不再有官方文档。可以找到 chrome.tabs.sendMessage 的文档 here .请注意,这些事件不能混合使用,请使用 *Request *Message

关于javascript - 是否可以从弹出窗口触发内容脚本中的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099405/

相关文章:

javascript - 如何清理 chrome 内存缓存?

google-chrome-extension - Chrome 扩展中的权限调整

javascript - 使用 Angular 服务/工厂的 Setter 和 getter

javascript - 当我需要运行服务器端代码时,如何响应按钮的点击(不提交页面)?

javascript - 使用正则表达式获取标签中的第一个单词

javascript - 在线阅读服务?

javascript - 为什么这个 javascript 无法加载到我的 chrome 扩展中?

javascript - 导航到新页面时 $(document).ready 不会触发

google-chrome-extension - Chrome 扩展程序中允许转换什么类型的广告?

javascript - Chrome 扩展 : sendMessage doesn't work