Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以从弹出窗口触发内容脚本中的行为?_Javascript_Google Chrome Extension - Fatal编程技术网

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

Javascript 是否可以从弹出窗口触发内容脚本中的行为?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,目前,我正在使用消息传递从contentscript发送请求,以获取localStorage中的数据,我对此没有任何问题,内容脚本正在按预期工作 你能从另一个方向做这个吗 我有一个存在于内容脚本中的对象,它有一个名为.apply的方法,我希望在所使用的用户单击该选项时运行它 我尝试在内容脚本中创建一个侦听器,如下所示: var myLinker = new Linker(); chrome.extension.onRequest.addListener(function(request) {

目前,我正在使用消息传递从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");
});
并向其发送如下请求:

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.sendRequest而不是chrome.extension.sendRequest


因为,sendRequest已经没有官方文档了。可以找到chrome.tabs.sendMessage的文档。请注意,这些事件不能混合使用,请使用*请求或*消息。

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

因为,sendRequest已经没有官方文档了。可以找到chrome.tabs.sendMessage的文档。请注意,这些事件不能混合使用,请使用*请求或*消息。

是的,您可以使用:

内容脚本位于页面的DOM中。在Chrome中打开的每个页面都有一个与之关联的选项卡ID-

假设您希望将{method:apply}发送到刚在新选项卡中打开的页面:

chrome.tabs.onCreated.addListener(function(tab) {
    chrome.tabs.sendMessage(tab.id, { method: "apply" });
});
还有其他事件/方法可以获取要将消息发送到的特定选项卡。我想有一个名为getCurrent的文件要发送到当前选定的选项卡,请查看文档。

是的,您可以使用以下方法:

内容脚本位于页面的DOM中。在Chrome中打开的每个页面都有一个与之关联的选项卡ID-

假设您希望将{method:apply}发送到刚在新选项卡中打开的页面:

chrome.tabs.onCreated.addListener(function(tab) {
    chrome.tabs.sendMessage(tab.id, { method: "apply" });
});

还有其他事件/方法可以获取要将消息发送到的特定选项卡。我想有一个名为getCurrent的文件要发送到当前选定的选项卡,请查看文档。

当对tab.id使用null时,当前选项卡被选中。当对tab.id使用null时,当前选项卡被选中。编辑是因为我意识到我误读了你所说的内容,谢谢你的澄清。编辑是因为我意识到我误读了你所说的,谢谢你的澄清。