目前我正在使用消息传递从我的 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 20 ,sendRequest
不再有官方文档。可以找到 chrome.tabs.sendMessage
的文档 here .请注意,这些事件不能混合使用,请使用 *Request
或 *Message
。
关于javascript - 是否可以从弹出窗口触发内容脚本中的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099405/