Google chrome extension 在iframe中使用tabs.executeScript

Google chrome extension 在iframe中使用tabs.executeScript,google-chrome-extension,Google Chrome Extension,我正在尝试实现一个扩展,它可以自动填充应用程序网站中的所有字段。目前,它在主框架中工作得很好,但是如果字段在iframe中,它就不工作了。 我允许用户使用内容脚本自动注入JS或单击按钮手动注入JS 我的问题是,即使我将allFrames设置为true,我的JS也没有注入iframe,但是内容脚本可以工作 "content_scripts" : [ { "matches" : ["https://*/my_url/*"], "j

我正在尝试实现一个扩展,它可以自动填充应用程序网站中的所有字段。目前,它在主框架中工作得很好,但是如果字段在iframe中,它就不工作了。 我允许用户使用内容脚本自动注入JS或单击按钮手动注入JS

我的问题是,即使我将allFrames设置为true,我的JS也没有注入iframe,但是内容脚本可以工作

"content_scripts" : [
        {   
            "matches" : ["https://*/my_url/*"],
            "js" : ["/auto_fill.js"],
            "all_frames": true
        }
]
该内容脚本工作正常,正在注入JS。但是,

my_button.addEventListener('click', () => {
    chrome.tabs.executeScript(null, {
        file : "/auto_fill.js",
        allFrames : true
    })
});
这个执行脚本不起作用,什么也没发生。 我尝试使用的iframe是一种动态的iframe,我必须单击几个按钮才能加载并导航到我想要的应用程序站点 我是否必须找出iframe id或tab id才能工作,请提供一些提示

如果我没有说清楚,请告诉我


非常感谢您抽出时间。

如评论所示,正如文档所示,扩展正在使用无主机URL模式的权限,但此权限仅授予对选项卡主URL的访问权限。当iframe指向不同的URL源时,activeTab不会授予它权限,这是自Chrome 45以来强制实施的故意限制,请参见。

假设您要将这两个片段插入到active tab null参数中,则这两个片段应完全等效,否则看起来像Chrome中的错误。也就是说,您可以添加matchAboutBlank:true以在动态iFrame中运行,而无需正确的URL。感谢您的帮助@wOxxOm。但是,问题不在内容脚本中,问题在第二个代码段中,我允许用户单击按钮运行自动填充脚本听起来好像你认为我不理解问题,但我理解。看到了。我真的很抱歉,我在看match_about_blank而不是match about blank。然而,即使将matchAboutBlank设置为true,它仍然不起作用。我的iframe实际上正在打开另一个链接,但由于它仍在活动选项卡中,我无法理解发生了什么,可能我需要重新检查我正在使用的此iframe。您是否使用activeTab权限?它仅限于选项卡的主URL,因此不会处理具有不同站点的iFrame。