0

如果用户需要,我已经编写了一个 Chrome 扩展来替换新标签。它通过拦截 tabs.onUpdated 并chrome://newtab/从扩展重定向到另一个页面来工作,如本答案中所述。

问题是该页面的地址栏在扩展中保留了 HTML 的(丑陋的)URL,例如chrome-extension://hibkhcnpkakjniplpfblaoikiggkopka/html/newtabl.html. 该 URL 如何替换为空字符串?

我试过history.replaceState,但最好的办法是更改newtab.html路径中的文件()。使用 http:// URL 会使扩展程序崩溃:

history.replaceState({}, 'iDoRecall practice', 'http://type-anything-here.com');

有什么聪明的方法可以清除多功能框吗?

4

1 回答 1

1

简而言之,History API只能更改 URL 的路径部分,而不是来源(protocol://host:port),这是防止网站欺诈的明显原因:

如果生成的绝对 URL 的来源与入口设置对象指定的负责文档的来源不同,并且在上一步中比较的两个解析 URL 的路径或查询组件不同,则抛出 SecurityError 异常并中止这些步骤。(这可以防止沙盒内容欺骗同一来源的其他页面。)

只有在一种情况下,多功能框可能为空:在新标签页上,您必须在chrome_url_overrides中替换 manifest.json 中的新标签。

于 2015-09-02T11:04:30.613 回答