all_frames:true 不适用于 stackoverflow 片段输出 window

all_frames:true not working for stackoverflow snippet output window

我创建了一个扩展,我想使用此清单将其注入到所有框架中:

"content_scripts": [
    {
        "js": ["myscript.js"],
        "matches": ["*://*/*"],
        "all_frames": true,
        "run_at": "document_start",
        "match_about_blank": true
    }
],

为了这个问题,假设myscript.js只有:

console.log('------------------------------------');
console.log(window);
console.log('------------------------------------');

当我尝试这个时它运行良好,即如果我尝试使用 Gmail,我可以看到许多 iframe 在我使用该网站时不断加载,每次我正确注入脚本并看到代码中的上面几行.

但是我发现了一个我无法理解的异常。如果我在 Whosebug 上打开代码片段编辑器,结果窗格是一个 iframe 不会被注入(即我没有在控制台中看到这些行)。

这是怎么回事?以及如何将代码段结果也注入 window?

您所指的实际 iframe 具有以下形式:

<iframe      id="snpte-box-edit-result"
           name="789af52f-65c6-4c71-b52f-66063e29d6f3"
        sandbox="allow-forms allow-modals allow-scripts"
          class="snippet-box-edit"
    frameborder="0">

Content scripts documentation 引用 match_about_blank:

Content scripts cannot be inserted in sandboxed frames.

所以,不幸的是,这将是一个例外,你不能 "break into"。