在Chrome扩展中的派生窗口上运行Javascript
我正在构建一个Chrome扩展,其中一个行为是生成一个具有指定大小和位置的弹出窗口:在Chrome扩展中的派生窗口上运行Javascript,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在构建一个Chrome扩展,其中一个行为是生成一个具有指定大小和位置的弹出窗口: url = "https://google.com" chrome.windows.create( { 'url': url, 'type': 'popup', 'width': Math.floor(screen.availWidth / 2), 'height': Math.floor(screen.availHeight / 2), 'left':
url = "https://google.com"
chrome.windows.create(
{
'url': url,
'type': 'popup',
'width': Math.floor(screen.availWidth / 2),
'height': Math.floor(screen.availHeight / 2),
'left': Math.floor(screen.availWidth / 2),
'top': 0
},
function(window) {}
);
此时,我需要在生成的页面上运行一些Javascript。我知道我可以在清单中声明一个与url
匹配的内容脚本,但是url实际上是动态的,几乎可以是任何内容
因此,我现在最好的猜测是添加一个带有matcherhttps://*/*
的内容脚本,并通过一些其他方法确定这是扩展生成的页面-通过添加一些查询参数,或通过扩展消息传递系统
不过,这种方法似乎有点老套。有人知道更“合适”的方法吗 在回调内部使用:
chrome.windows.create({ /*params*/ }, w => {
chrome.tabs.executeScript(w.tabs[0].id, {file: 'content.js'});
});
注:
- 站点或
”不是JavaScript
窗口,因此最好使用不同的名称
chrome.windows.create({ /*params*/ }, w => {
chrome.tabs.executeScript(w.tabs[0].id, {file: 'content.js'});
});
注:
- 站点或
”不是JavaScript
窗口,因此最好使用不同的名称
https://*/*
,页面可以“查找自身”,以确定是否应该注入“启动页面”脚本。不确定是否有更好的方法来处理它。你可以在后台脚本中为选项卡更新添加一个侦听器,并再次执行脚本。它的选项卡id相同。有关更多信息,请在需要时打开一个新问题。哦,我明白了,因此选项卡id是全局的,我也不需要“窗口id”。谢谢,太棒了。可能值得指出的是,文件的路径必须相对于chrome扩展名的根。谢谢如果你不介意的话,再问一个问题。我注意到,当我刷新生成的页面时,我的脚本不再附加(我想这是有道理的)。有没有办法在localStorage中存储对此页面/选项卡的引用?然后我可以制作一个内容脚本来匹配https://*/*
,页面可以“查找自身”,以确定是否应该注入“启动页面”脚本。不确定是否有更好的方法来处理它。你可以在后台脚本中为选项卡更新添加一个侦听器,并再次执行脚本。它的选项卡id相同。有关更多信息,请在需要时打开一个新问题。哦,我明白了,因此选项卡id是全局的,我也不需要“窗口id”。谢谢