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

时间:2015-08-29 17:41:34

标签: javascript google-chrome google-chrome-extension

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

因此,在manifest.json中有一个权限块:

"permissions": [
  "activeTab"
]

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();'
                    });
                });
            }
        });

    });
});

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

  

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

我看不到将"about:blank"页面添加到permissions的方法。我真的不想开始使用content_scripts,因此我可以设置match_about_blank设置。

我尝试将"about:blank""about:*添加到permission,我得到的只是一个安装错误。

  

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

有解决方案吗?

更新:Here is a gist with everything you'll need。包含jsbin演示的链接,但问题不在于该网站的具体问题。该扩展程序最初是在雅虎邮件弹出窗口中测试的,您可以选择打印电子邮件。

1 个答案:

答案 0 :(得分:5)

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

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

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