使用自定义协议或 url 方案时,window.open() 方法会在 Google Chrome 中打开一个空白页面
When using custom protocols or url scheme's, the window.open() method opens a blank page in Google Chrome
当我在有效的 https url 方案上使用 window.open(url,'_blank')
时,浏览器会打开一个带有 URL 的新选项卡。
例如 - 在 Chrome 浏览器控制台中执行以下命令:
window.open('https://google.com','_blank')
这将打开一个选项卡或 window(基于浏览器设置)并打开 google.com。
但是,如果我使用自定义协议或 URL 方案如下:
window.open('tryme://helloworld/XXX/VGhpcyBpcyBhIHRlc3QgdXJs==','_blank')
然后打开带有 "about:blank" 的空白选项卡。这种行为似乎只发生在 chrome,Mozilla 似乎适用于 URL 方案。
chrome 是否存在任何持续存在的问题,或者它应该如何工作?
我不得不删除我之前的回答,建议您在打开 link 时使用变量声明,这将导致新的 window 在地址栏中包含 url 但实际上不是访问它。
我建议这是 Google Chrome 拒绝访问除 http、https、ftp 和文件
以外的协议的安全功能
不幸的是,我无法在官方文档中找到它,但是你会发现使用 URL() 创建一个位置你会得到预期的结果
let newLocation = new URL('tryme://helloworld/XXX/VGhpcyBpcyBhIHRlc3QgdXJs==')
returning
{
...
protocol: "tryme:"
pathname: "//mytest.com"
...
}
但是googlechrome会拒绝更新
window.location = newLocation
如果 return 显示一条错误消息但不这样做就好了。您还会发现,使用新的 URL() 将适用于支持的协议。
希望对您有所帮助。如果我在官方文档中找到明确的证据,我会更新这个答案,但我很确定 google chrome 上的高安全性方法是不可能的原因
当我在有效的 https url 方案上使用 window.open(url,'_blank')
时,浏览器会打开一个带有 URL 的新选项卡。
例如 - 在 Chrome 浏览器控制台中执行以下命令:
window.open('https://google.com','_blank')
这将打开一个选项卡或 window(基于浏览器设置)并打开 google.com。
但是,如果我使用自定义协议或 URL 方案如下:
window.open('tryme://helloworld/XXX/VGhpcyBpcyBhIHRlc3QgdXJs==','_blank')
chrome 是否存在任何持续存在的问题,或者它应该如何工作?
我不得不删除我之前的回答,建议您在打开 link 时使用变量声明,这将导致新的 window 在地址栏中包含 url 但实际上不是访问它。
我建议这是 Google Chrome 拒绝访问除 http、https、ftp 和文件
以外的协议的安全功能不幸的是,我无法在官方文档中找到它,但是你会发现使用 URL() 创建一个位置你会得到预期的结果
let newLocation = new URL('tryme://helloworld/XXX/VGhpcyBpcyBhIHRlc3QgdXJs==')
returning
{
...
protocol: "tryme:"
pathname: "//mytest.com"
...
}
但是googlechrome会拒绝更新
window.location = newLocation
如果 return 显示一条错误消息但不这样做就好了。您还会发现,使用新的 URL() 将适用于支持的协议。
希望对您有所帮助。如果我在官方文档中找到明确的证据,我会更新这个答案,但我很确定 google chrome 上的高安全性方法是不可能的原因