309

如何以编程方式在新选项卡而不是新窗口中打开 URL?

4

6 回答 6

495

使用window.open()

var win = window.open('http://stackoverflow.com/', '_blank');
if (win) {
    //Browser has allowed it to be opened
    win.focus();
} else {
    //Browser has blocked it
    alert('Please allow popups for this website');
}

根据浏览器的实现,这将起作用

您无法做任何事情来使其在窗口而不是选项卡中打开。

于 2013-11-08T04:49:12.700 回答
198

就这么简单。

window.open('_link is here_', 'name'); 

功能说明:

name是窗口的名称。支持以下名称:

  • _blank- URL 被加载到新选项卡中。这是默认设置。
  • _parent- URL 被加载到父框架中
  • _self- URL 替换当前页面
  • _top- URL 替换任何可能加载的框架集
于 2013-11-08T05:50:03.757 回答
67

如果您打算在新选项卡上打开所有链接,请尝试使用此 jquery

$(document).on('click', 'a', function(e){ 
    e.preventDefault(); 
    var url = $(this).attr('href'); 
    window.open(url, '_blank');
});
于 2015-05-06T03:48:01.787 回答
44
 var url = "http://www.example.com";
 window.open(url, '_blank');
于 2013-11-08T04:52:57.003 回答
27

您可以轻松创建新标签;执行以下操作:

function newTab() {
     var form = document.createElement("form");
     form.method = "GET";
     form.action = "http://www.example.com";
     form.target = "_blank";
     document.body.appendChild(form);
     form.submit();
}
于 2014-05-03T09:46:47.590 回答
14

我知道您的问题没有说明您是尝试在新窗口中打开所有标签还是仅打开外部链接。

但是,如果您只想在新选项卡中打开外部链接,您可以这样做:

$( 'a[href^="http://"]' ).attr( 'target','_blank' )
$( 'a[href^="https://"]' ).attr( 'target','_blank' )
于 2015-03-27T22:44:00.930 回答