为什么使用window.open打开chrome://newtab/ Chrome新标签页不生效?
问题复现
你提交的测试代码如下:
// 可以正常运行 window.open('https://google.com/', '_blank'); // 无法生效 window.open('chrome://newtab/', '_blank');
无法生效的核心原因
- 这是Chrome浏览器的安全沙箱限制导致的:所有
chrome://开头的URL都属于浏览器内部特权页面,除了新标签页之外,常见的还有设置页chrome://settings/、扩展管理页chrome://extensions/等,这类页面仅允许浏览器自身、内置组件或者获得了高权限的浏览器扩展访问,普通网页运行在受限的沙箱环境中,没有权限触发这类页面的打开。 - 普通网页的JavaScript上下文默认仅允许调用HTTP/HTTPS、FTP、blob等公共协议的地址,
chrome://属于浏览器私有特权协议,不在普通网页允许调用的范围内,所以代码执行时会被浏览器直接静默拦截,不会产生任何打开新标签页的效果。
替代实现方案
如果你的需求是打开一个空白新标签页,可以把目标地址改成所有浏览器都允许普通网页打开的about:blank即可:
window.open('about:blank', '_blank');
内容的提问来源于stack exchange,提问作者Yug Khatri
相关产品推荐
相关产品推荐

