如果用户想要,我已经编写了一个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');
清除多功能框的任何聪明方法?
答案 0 :(得分:1)
简单地说,History API只能更改URL的路径部分,而不是源(protocol:// host:port),这是防止网站欺诈的明显原因:
如果生成的绝对URL的来源与条目设置对象指定的责任文档的来源不同,并且在上一步骤中比较的两个已解析URL的路径或查询组件不同,则抛出SecurityError异常并中止这些步骤。 (这可以防止沙盒内容欺骗同一来源的其他页面。)
多功能框只能在一种情况下为空:在新的标签页上,您必须替换chrome_url_overrides中manifest.json中的新标签。