【问题标题】:Exclude Globs not working in Chrome Extension?排除 Glob 在 Chrome 扩展程序中不起作用?
【发布时间】:2012-12-09 22:30:53
【问题描述】:

所以我正在编写自己的 chrome 扩展程序,并且我有以下 content_scripts:

"content_scripts": [{
    "matches": ["*://*.youtube.com/*"],
    "exclude_globs": ["*user*"],
    "css": ["youtube.css"]
}]

如您所见,它在 youtube 上运行。但是它不应该在 youtube.com/user/ 上运行,这就是我有一个 exclude_globs 字段的原因。但是,它不起作用,并且在查看用户频道时仍然运行。有人有什么想法吗?

【问题讨论】:

    标签: google-chrome google-chrome-extension youtube


    【解决方案1】:

    这是一个已知的 bug in Chrome ,作为解决方法使用 insertCSS

    例如:

    background.js 中的以下代码将执行与 manifest.json 中相同的工作

    //Use chrome.tabs.onUpdated.addListener(function(integer tabId, object changeInfo, Tab tab) {...}); as applicable to ensure it works on every page     
    chrome.browserAction.onClicked.addListener(function (tab) {
            chrome.tabs.insertCSS(null, {
                code: "document.body.bgColor='red'",
                "all_frames": true
            });
        });
    

    或

    //Use chrome.tabs.onUpdated.addListener(function(integer tabId, object changeInfo, Tab tab) {...}); as applicable to ensure it works on every page
     chrome.browserAction.onClicked.addListener(function (tab) {
        chrome.tabs.insertCSS(null, {
            file: {file:"content.css"},
            "all_frames": true
        });
    });
    

    确保您在清单中有足够的权限

    /* in manifest.json */
    "permissions": [
      "tabs", "http://*/*"
    ],
    

    参考文献

    a)insertCSS

    b)Programmatic Injection

    希望这会有所帮助。

    【讨论】:

    • 这不需要我点击一个按钮来应用 CSS 吗?我宁愿它自动加载。我还尝试过使用 JS 而不是 CSS,然后它确实正确地遵循了排除...但是,加载 CSS 时会有延迟,然后您可以在加载 CSS 和页面移动时主动观看...我不想要的东西。
    • @JasonAxelrod:这是一个示例,您可以消除 chrome.browserAction.onClicked.addListener(function (tab) {}) 代码,并添加每次加载页面时运行的标签监听器;如果您希望它通过清单文件而不是一些编码运行,请消除“exclude_globs”字段并在匹配项中提供所有可能的 url,它可以解决 css 清单中的错误;也更新了我的答案
    猜你喜欢
    • 2012-06-03
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多