【问题标题】:Can't inject content script into all IFRAMEs from my Chrome Extension无法从我的 Chrome 扩展程序将内容脚本注入所有 IFRAME
【发布时间】:2014-11-03 13:42:04
【问题描述】:

在我的 Google Chrome 扩展程序中,我需要能够将我的 内容脚本 注入页面上的所有 IFRAMEs。为此,我原来的 manifest.json 声明如下:

"content_scripts": [
    {
        "run_at": "document_end",
        "all_frames" : true,
        "matches": ["http://*/*", "https://*/*"],
        "js": ["content.js"]
    }
],

这似乎对大多数网站都有效,直到我遇到了这样声明的IFRAME

(来自 Chrome 调试器)

这是它的 HTML:

<iframe id="wysiwygtext_ifr" src='javascript:""' frameborder="0" allowtransparency="true" title="Rich Text Area." style="width: 100%; height: 341px; display: block;"></iframe>

在这种情况下,我的内容脚本不会注入到 IFRAME

我尝试将matches 过滤器更改为"matches": ["&lt;all_urls&gt;"],但还是不行。

我有什么方法可以将我的 内容脚本 注入到这样的 IFRAME 中吗?

【问题讨论】:

    标签: javascript google-chrome iframe google-chrome-extension content-script


    【解决方案1】:

    这正是创建match_about_blank 标志的问题。它终于在 Chrome 37 中稳定发布。

    只需将"match_about_blank": true 添加到内容脚本定义即可。

    您也可以在 tabs.executeScript 中使用它。见:

    【讨论】:

    • 嘿,你就是那个男人!谢谢。我不知何故忽略了match_about_blank 标志。我也遇到了tabs.executeScript 解决方案,但我不知道如何在页面加载时使用它来注入我的内容脚本。你能扩展一下吗?
    • 如果你想在每个页面加载时注入,你应该只使用内容脚本定义。要使用 tabs.executeScript,您通常会使用一个后台页面,该页面监听 tabs.onUpdated 并在每个页面加载时调用 tabs.executeScript。
    • 好吧,他展示的 iframe 使它成为“about:blank”iframe 怎么样?我错过了什么吗?
    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 2011-04-25
    • 2012-07-04
    • 2011-09-28
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多