【问题标题】:Can I modify chrome://extensions/ page with JavaScript(user script)?我可以使用 JavaScript(用户脚本)修改 chrome://extensions/ 页面吗?
【发布时间】:2011-09-03 03:48:12
【问题描述】:

我想使用 JavaScript 为chrome://extensions/ 页面添加一个搜索栏,所以我创建了一个名为 test.user.js 的文件,并在其中编写脚本:

// ==UserScript==
// @name       chromeex
// @namespace  chromeex
// @version    v1.0
/* @reason
 * just a test
 * @end
 */
// @match     chrome://extensions/
//
// ==/UserScript==

(function(){
    alert("haha");
}());

但是当我在Chrome中加载它时,它说Invalid header,最后我发现是@match chrome://extensions/导致了错误。有解决办法吗?

【问题讨论】:

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


    【解决方案1】:

    Chrome 扩展程序不会在chrome://extensions/ 目录或Chrome Web Store 或其他一些重要的安全区域中执行。

    一种简单的思考方式是,如果一个扩展程序可以访问您的 Chrome 扩展程序页面中的 DOM,它可能会取消您卸载它的能力,这对许多用户来说可能是非常讨厌的。但是,如果您想在扩展页面之外构建一些东西以便能够搜索用户的扩展,您可能需要查看 chrome.management API

    chrome 本身不是允许的方案,这就是您收到无效方案错误的原因。 Here's what Google has to say about it:

    匹配模式本质上是一个以允许的方案(httphttpsfileftp)开头的 URL,并且可以包含 '*' 字符。特殊模式 <all_urls> 匹配任何以允许的方案开头的 URL。

    所以根据定义chrome 作为一个方案无论如何都行不通。不要把它想象成另一个网页,而是 Chrome 用户界面的一部分。

    【讨论】:

    • 其实可以通过管理api互相访问:code.google.com/chrome/extensions/management.html
    • 对,我在您添加评论时正在编辑它。在任何情况下,真正的大问题是 chrome.management 可以在扩展页面之外运行并拥有许多权限,但没有任何东西可以在 chrome://extensions/ 上运行脚本。能够启用/禁用/卸载扩展是一回事,而在万不得已的页面上修改 DOM 以进行扩展卸载则是另一回事。
    • 我尝试使用内容脚本编写扩展:code.google.com/chrome/extensions/content_scripts.html.But 当我在 manifest.json 中设置匹配 url 时:"matches": ["chrome://extensions/*"], 它说该方案无效
    • 是的,请参阅上面我修改后的评论。您当然可以使用 chrome.management 管理扩展,并且几乎可以将内容脚本放在任何地方。但是内容脚本具有修改 DOM 和添加/删除/更改元素的能力,因此它们在 chrome://extensions 和 Chrome 网上应用店中被禁用。 Chrome 已将所有 "chrome://*/* 匹配项禁用为无效方案。
    • 对。如果您在用户的收藏夹菜单(需要chrome.bookmarks 权限)或上下文菜单项(chrome.contextMenus)中添加浏览器操作或链接,无论如何您都可以尽快将用户发送到那里。从长远来看,它可以让您更好地控制用户看到的内容,而无需更改故障安全扩展页面。
    【解决方案2】:

    我认为,该页面不是“普通”网页,它是高安全区域,您不能乱用用户脚本。这就是插件的用途。

    【讨论】:

      【解决方案3】:

      出于安全原因,您不能在 chrome://extensions/ 中注入内容脚本/用户脚本。您可以使用Extension Management API 页面创建自己的扩展管理扩展。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 2011-10-11
        • 1970-01-01
        相关资源
        最近更新 更多