gpt4 book ai didi

javascript - 使用自定义协议(protocol)或 url 方案时,window.open() 方法会在 Google Chrome 中打开一个空白页面

转载 作者:行者123 更新时间:2023-11-29 15:09:14 27 4
gpt4 key购买 nike

当我在有效的 https url 方案上使用 window.open(url,'_blank') 时,浏览器会打开一个包含该 URL 的新选项卡。

例如 - 在 Chrome 浏览器控制台中执行以下命令:

window.open('https://google.com','_blank')

这会打开一个选项卡或窗口(基于浏览器设置),然后打开 google.com。

但是,如果我使用如下自定义协议(protocol)或 URL 方案:

window.open('tryme://helloworld/XXX/VGhpcyBpcyBhIHRlc3QgdXJs==','_blank')

Chrome Console然后打开一个带有"about:blank" 的空白标签。这种行为似乎只发生在 chrome 上,Mozilla 似乎适用于两种 URL 方案。

chrome 是否存在任何持续存在的问题,或者它应该如何工作?

最佳答案

我不得不删除我之前的回答,建议您在打开链接时使用变量声明,这将导致新窗口在地址栏中包含 url 但实际上并没有访问它。

我建议这是谷歌浏览器的一个安全功能,拒绝访问除 http、https、ftp 和文件以外的协议(protocol)

不幸的是,我无法在官方文档中找到它,但是您会发现使用 URL() 创建位置会得到预期的结果

let newLocation = new URL('tryme://helloworld/XXX/VGhpcyBpcyBhIHRlc3QgdXJs==')

回归

{
...
protocol: "tryme:"
pathname: "//mytest.com"
...
}

但是谷歌浏览器会拒绝更新

window.location = newLocation

如果它会返回一条错误消息但不这样做,那就太好了。您还会发现,使用新的 URL() 将适用于支持的协议(protocol)。

希望对您有所帮助。如果我在官方文档中找到明确的证据,我会更新这个答案,但我很确定谷歌在 chrome 上的高安全性方法是不可能的原因

关于javascript - 使用自定义协议(protocol)或 url 方案时,window.open() 方法会在 Google Chrome 中打开一个空白页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56707786/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com