"about:blank"页面的Chrome扩展程序权限

Mot*_*tie 10 javascript google-chrome google-chrome-extension

我的Chrome扩展程序没有使用,content_scripts因为我不想将代码注入每个页面.相反,当用户点击按钮时,会打开一个弹出窗口并将代码注入页面.

所以,在manifest.json一个权限块中:

"permissions": [
  "activeTab"
]
Run Code Online (Sandbox Code Playgroud)

popup.js这里有代码:

chrome.windows.getCurrent( function(win) {
    chrome.tabs.query({
        'windowId': win.id,
        'active': true
    }, function(tabArray) {

        // inject css & js only on initial click
        chrome.tabs.executeScript( null, {
            code : 'document.querySelector( "body" ).classList.contains( "_myExtension_code_injected" )'
        }, function( result ) {
            if ( result && !result[0] ) {
                chrome.tabs.insertCSS( null, {
                    file: 'myExtension.css'
                });

                chrome.tabs.executeScript(null, {
                    file: 'myExtension.js'
                }, function(){
                    chrome.tabs.executeScript(null, {
                        code: 'myExtension.init();'
                    });
                });
            }
        });

    });
});
Run Code Online (Sandbox Code Playgroud)

问题是一些网站打开一个包含附加信息的弹出窗口.并且该弹出页面的URL是"about:blank".如果我尝试初始化扩展,我在控制台中看到此消息:

运行tabs.executeScript时未经检查的runtime.lastError:无法访问URL"about:blank"的内容.扩展清单必须请求访问此主机的权限.

我没有看到添加"about:blank"页面的方法permissions.我真的不想开始使用content_scripts,所以我可以设置match_about_blank设置.

我已经尝试添加"about:blank""about:*permission和我得到的是安装错误.

尝试安装此扩展时出现警告:权限'about:*'未知或URL模式格式错误.

有解决方案吗?


更新:这里有一个你需要的一切的要点.包含jsbin演示的链接,但问题不在于该网站的具体问题.该扩展程序最初是在雅虎邮件弹出窗口中测试的,您可以选择打印电子邮件.

Dan*_*err 5

尝试使用 chrome.tabs.executeScript({ file: "script.js", matchAboutBlank: true })

"如果matchAboutBlank为true,那么代码也会注入about:blank和about:srcdoc框架,如果您的扩展程序可以访问其父文档.代码不能插入顶层about:-frames.默认情况下它是false. "

https://developer.chrome.com/extensions/tabs#property-details-matchAboutBlank

  • 谢谢!我完全错过了文档中的内容。遗憾的是,即使添加了该参数,我仍然看到相同的错误消息。 (2认同)
  • 我仍然收到此错误:`未检查的runtime.lastError:无法在原点“null”访问“about:blank”。扩展必须有权访问帧的来源,并且 matchAboutBlank 必须为 true。 (2认同)