为何JavaScript中window.open()无法打开无http/https的链接?
无协议头链接无法正确打开的解决方法
问题原因
当调用window.open('www.google.com')时,浏览器会将该字符串识别为相对路径,而非外部绝对URL,因此会自动拼接当前页面的基础地址(比如你的本地服务器地址http://localhost:53484/),最终生成错误的地址http://localhost:53484/www.google.com,导致无法访问目标网站。
解决方案
方案1:手动添加HTTPS协议头
直接给链接补全https://协议(优先推荐HTTPS),修改open2函数:
function open2() { window.open('https://www.google.com') }
方案2:通用自动补全协议函数
如果需要处理大量不确定是否带协议的链接,可以封装一个工具函数自动检测并补全:
// 通用URL打开函数,自动补全协议头 function openUrl(url) { // 正则匹配是否已包含http/https协议 if (!/^https?:\/\//i.test(url)) { url = 'https://' + url; } window.open(url); } // 调用示例 function open2() { openUrl('www.google.com'); }
这个函数通过正则表达式检查链接开头,若未包含协议头则自动添加https://,确保浏览器将其识别为外部绝对URL。
内容的提问来源于stack exchange,提问作者HelloCW
相关产品推荐
相关产品推荐

