此代码(带有HTTPS协议),成功打开https://www.google.com
。
jsfiddle
<script>
function openInNewTab() {
var url = 'https://www.google.com';
var win = window.open(url, '_blank');
win.focus();
}
</script>
<div onclick="openInNewTab();">OPEN LINK ON A NEW WINDOW</div>
但是,当我使用此代码(没有HTTP协议)时,它将打开https://www.example.com/www.google.com
。
jsfiddle
<script>
function openInNewTab() {
var url = 'www.google.com';
var win = window.open(url, '_blank');
win.focus();
}
</script>
<div onclick="openInNewTab();">OPEN LINK ON A NEW WINDOW</div>
有没有办法使用JavaScript在没有HTTPS协议的情况下打开外部网站?
为什么不将目标设置为_blank?
使用外部锚标签?例如
<a href="http://www.google.com" target="_blank">OPEN LINK A NEW WINDOWS</a>
尽管在此示例中,Google将重定向到HTTPS,因为安全
开头没有协议的URL字符串(或"协议相关的速记" //
,有很好的论点不使用它)将被视为 anchorurl 如果它以哈希, #fragment
或其他方式开头相对url 。相对URL只是将www.google.com
放在路径当前级别的顶部。如果您的位置是http://www.example.com
,则将变为http://www.example.com/www.google.com
。或者,如果是 http://foo.net/bar/baz/quux.html
,则变为 http://foo.net/bar/baz/www.google.com
。
var url = new URL('http://example.com');
请记住,当您打开http://google.com时,它们会重定向到其HTTPS协议。您对此无能为力。