Link to chrome:// url from a webpage

∥☆過路亽.° 提交于 2019-12-09 04:53:18

问题


UPDATE

chrome://about/ has direct links to chrome://settings and others, so it can be done.

How can I link/redirect to a chrome:// URL in a webpage? For example, chrome://settings. When attempting to click a link to a chrome:// URL,

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

I get an error in the console:

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

According to this answer, it is possible:

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

I've tried this script:

<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>

And also this one:

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

Neither works. In addition to those, I've tried:

  • Linking to it using <a href="chrome://newtab">
  • Redirect the user using window.location.

However, I believe there may be a JavaScript workaround. When the user presses a link, is it possible to change the URL to chrome://settings? The user would have to press Enter after, but this seems like the best I'd get.


回答1:


Nope, there is no way to do it from a webpage.

chrome:// is a privileged origin, and any attempt to open it will result in a redirect to about:blank.

Chrome does that to reduce the attack surface: even though just opening those URLs should be harmless, it's better not to allow websites and external programs to even try.

Besides, it's not that harmless, e.g. debug URLs like chrome://crash, chrome://hang (careful, those really do what you expect).

Obviously, you can't use chrome.tabs as it's an extension API not exposed to websites. It is, however, capable of opening privileged origins.




回答2:


Below works for me;

manifest.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

Add a customized one or download a sample from this link

Include all these 4 inside one directory and load unpack the extension to chrome. It should work!



来源:https://stackoverflow.com/questions/40362775/link-to-chrome-url-from-a-webpage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!