从Chrome扩展程序代码中清除Omnibox

时间:2015-09-02 10:12:41

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

如果用户想要,我已经编写了一个Chrome扩展程序来替换新标签。它的工作原理是拦截tabs.onUpdated并将chrome://newtab/重定向到扩展程序中的另一个页面,如in this answer所述。

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

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

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

清除多功能框的任何聪明方法?

1 个答案:

答案 0 :(得分:1)

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

  

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

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