Chrome,Javascript,window.open在新标签

在chrome中打开一个新选项卡:

<button onclick="window.open('newpage.html', '_blank')" /> 

这在一个新的窗口中打开(但是我想这也打开一个新的标签:

 <script language="javascript"> window.open('newpage.html', '_blank'); </script> 

这可行吗?

您不能直接控制这个,因为这是一个由Internet Explorer用户控制的选项。

使用不同的窗口名称打开页面将打开一个新的浏览器窗口,如popup,或打开一个新的选项卡,如果用户configuration浏览器这样做。

编辑:

更详细的解释:

1.在现代浏览器中,window.open将在新的选项卡中打开而不是popup。

2.您可以通过在第三个参数中指定选项来强制浏览器使用新窗口(“popup”)

3.如果window.open调用不是用户启动的事件的一部分,它将在新窗口中打开。

4. “用户启动的事件”不必具有相同的函数调用 – 但它必须源自用户点击调用的函数

5.如果用户启动的事件委托或推迟一个函数调用(在一个事件监听器或委托没有绑定到单击事件,或通过使用setTimeout举例),它失去了它的状态为“用户启动”

6.一些popup窗口阻止程序将允许从用户启动的事件打开窗口,但不能打开其他窗口。

7.如果任何popup窗口被阻止,通常由阻止者允许的(通过用户发起的事件)有时也会被阻止。 一些例子…

强制在新的浏览器实例中打开一个窗口,而不是新的选项卡:

 window.open('page.php', '', 'width=1000'); 

即使它调用另一个函数,以下内容也将成为用户启动的事件:

 function o(){ window.open('page.php'); } $('button').addEvent('click', o); 

以下不符合用户发起的事件,因为setTimeout推迟它:

 function g(){ setTimeout(o, 1); } function o(){ window.open('page.php'); } $('button').addEvent('click', g); 

如果用户喜欢,有时候强制使用标签。 正如普拉卡什上面所说的那样,这有时是由使用非用户发起的事件所决定的,但是也有解决方法。

例如:

 $("#theButton").button().click( function(event) { $.post( url, data ) .always( function( response ) { window.open( newurl + response, '_blank' ); } ); } ); 

将始终在新浏览器窗口中打开“newurl”,因为“always”函数不被视为用户启动的。 但是,如果我们这样做:

 $("#theButton").button().click( function(event) { var newtab = window.open( '', '_blank' ); $.post( url, data ) .always( function( response ) { newtab.location = newurl + response; } ); } ); 

我们打开新的浏览器窗口或创build新的选项卡,由用户首选项确定,button点击哪个用户启动。 然后,我们只需从AJAXpost返回后将该位置设置为所需的URL。 瞧,我们强制使用一个标签,如果用户喜欢。

目前(Chrome 39)我使用这个代码来打开一个新标签:

 window.open('http://www.stackoverflow.com', '_blank', 'toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes'); 

如果你使用window.open(url, '_blank') ,它将被阻止(popup窗口阻止程序)在Chrome,火狐等

尝试这个,

 $('#myButton').click(function () { var redirectWindow = window.open('http://google.com', '_blank'); redirectWindow.location; }); 

工作js小提琴这个http://jsfiddle.net/safeeronline/70kdacL4/2/

工作js小提琴ajax窗口打开http://jsfiddle.net/safeeronline/70kdacL4/1/

这将在Chrome和Firefox中的新标签中打开链接,并可能会有更多的浏览器没有经过testing:

 var popup = $window.open("about:blank", "_blank"); // the about:blank is to please Chrome, and _blank to please Firefox popup.location = 'newpage.html'; 

它基本上打开一个新的空白选项卡,然后设置该空白选项卡的位置。 注意这是一种黑客行为,因为浏览器标签页/窗口行为确实是浏览器和用户的域名,责任和select。

第二行可以在callback中调用(例如在完成一些AJAX请求之后),但是浏览器不会将其识别为用户启动的单击事件,并且可能会阻止popup窗口。

清除迷你解决scheme$('<form action="http://samedomainurl.com/" target="_blank"></form>').submit()

您可以使用此代码在新标签中打开..

 function openWindow( url ) { window.open(url, '_blank'); window.focus(); } 

我从stackoverflow得到它..

最佳的方式我使用:

1-添加链接到您的HTML:

 <a id="linkDynamic" target="_blank" href="#"></a> 

2-添加JSfunction:

 function OpenNewTab(href) { document.getElementById('linkDynamic').href = href; document.getElementById('linkDynamic').click(); } 

3-只要用你想要的链接调用OpenNewTab函数