【问题标题】:Link to chrome:// url from a webpage从网页链接到 chrome:// url
【发布时间】:2017-03-14 18:02:40
【问题描述】:

更新

chrome://about/ 有直接链接到chrome://settings 和其他人,所以可以做到。

如何链接/重定向到网页中的chrome:// URL?例如,chrome://settings。尝试单击指向chrome:// URL 的链接时,

<a href="chrome://settings">link</a>

我在控制台中收到错误:

Not allowed to load local resource: chrome://settings/

根据这个答案,有可能:

Link to chrome://chrome/extensions from extension options page

我试过这个脚本:

<a href="#" id="test">test</a>
<script>
document.addEventListener('DOMContentLoaded', function () {
    document.getElementById('test').addEventListener('click', function () {
        chrome.tabs.update({
            url: 'chrome://chrome/extensions'
        });
    });
});
</script>

还有这个:

<a href="#" onclick="chrome.tabs.create({url:'chrome://settings/clearBrowserData'});">click me</a>

两者都不起作用。除此之外,我还尝试过:

  • 使用&lt;a href="chrome://newtab"&gt; 链接到它
  • 使用window.location重定向用户。

但是,我相信可能有 JavaScript 解决方法。当用户点击链接时,是否可以将 URL 更改为chrome://settings?用户必须在之后按 Enter,但这似乎是我能得到的最好的。

【问题讨论】:

  • 您将这段 JavaScript 代码和 HTML 放在哪里?根据您对答案的评论,听起来您想将此链接放在网页中。那是对的吗?但是,您的 JavaScript 代码正在使用特定于扩展的 API。
  • 如您链接的页面Link to chrome://chrome/extensions from extension options page 中所述,可在扩展程序中运行的代码与可在网页中运行的代码之间存在很大差异。 chrome.tabs 是网页无法使用的扩展特定 API。 Now see Xan's answer.
  • chrome://about/ 已经是使用 chrome:// 方案的 URL(即 Google Chrome 内部的)。声称您可以根据来自 Chrome 内部页面的链接从网页链接到 chrome:// URL,这是错误的并且是有缺陷的比较。已经清楚地确定您可以从已经具有特权的 URL/代码中获得此类链接(请参阅详细说明如何从扩展程序中执行此操作的答案)。
  • 注意:如果对您的问题提供更新,而您只提供一点额外的文本而不更改您的大部分问题,请将更新与您的大部分问题分开,这样我们就不会必须去看看edit diff 看看是不是这样。常见的做法是将更新放在问题的底部。

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


【解决方案1】:

不,没有办法从网页上做到这一点。

chrome:// 是一个特权来源,任何打开它的尝试都会导致重定向到about:blank

Chrome 这样做是为了减少攻击面:即使只是打开那些 URL 应该是无害的,最好不要让网站和外部程序甚至尝试。

此外,它并不是那么无害,例如调试像 chrome://crashchrome://hang 这样的 URL(小心,那些 真的 符合你的预期)。

显然,您不能使用chrome.tabs,因为它是一个不向网站公开的扩展 API。但是,它能够打开特权起源。

【讨论】:

    【解决方案2】:

    以下对我有用;

    ma​​nifest.json

     {
      "manifest_version": 2,
    
      "name": "Redirection Sample",
      "description": "Test Redirection",
      "version": "1.0",
    
      "browser_action": {
        "default_icon": "icon.png",
        "default_popup": "popup.html"
      },
      "permissions": [
        "activeTab",
        "https://ajax.googleapis.com/"
      ]
    }
    

    popup.html

    <!doctype html>
    <html>
      <head>
        <title>Redirection Popup</title>
        <script src="popup.js"></script>
      </head>
      <body>
      <a href="#" id="test">test</a>
      </body>
    </html>
    

    popup.js

      document.addEventListener('DOMContentLoaded', function() {
            document.getElementById('test').addEventListener('click', function() {
                chrome.tabs.update({ url: 'chrome://chrome/extensions' });
            });
        });
    

    icon.png

    添加一个定制的或从link下载一个示例

    将所有这 4 个包含在一个目录中,并将扩展加载解压到 chrome。它应该工作!

    【讨论】:

    • 您好,对此很抱歉,但我不是在寻找扩展程序,因为我的工作场所阻止我们使用任何扩展程序。我宁愿制作一个适用于任何没有扩展名的用户的解决方案
    • 谢谢,我必须将 'chrome://chrome/extensions' 更改为 'chrome://extension'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2017-03-04
    • 2016-11-28
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多