Chrome、Javascript、window.open在新选项卡中

Chrome、Javascript、window.open在新选项卡中,javascript,window.open,Javascript,Window.open,在chrome中,这将在新选项卡中打开: <button onclick="window.open('newpage.html', '_blank')" /> window.open('page.php', '', 'width=1000'); 这将在一个新窗口中打开(但我希望它也在一个新选项卡中打开: <script language="javascript"> window.open('newpage.html', '_blank'); </scri

在chrome中,这将在新选项卡中打开:

<button onclick="window.open('newpage.html', '_blank')" />
window.open('page.php', '', 'width=1000');

这将在一个新窗口中打开(但我希望它也在一个新选项卡中打开:

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

open('newpage.html','u blank');

这可行吗?

您不能直接控制它,因为它是由Internet Explorer用户控制的选项

使用Window.open以其他窗口名称打开页面将在新的浏览器窗口中打开(如弹出窗口),或者在新选项卡中打开(如果用户配置了浏览器)

编辑:

更详细的解释是:

1。在现代浏览器中,window.open将在新选项卡中打开,而不是弹出窗口

2。通过在第三个参数中指定选项,可以强制浏览器使用新窗口(“弹出窗口”)

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

4.一个“用户发起的事件”不必调用同一个函数,但它必须起源于用户单击调用的函数

5.如果用户启动的事件委托或延迟函数调用(在未绑定到click事件的事件侦听器或委托中,或通过使用setTimeout,例如),则它将失去“用户启动”的状态

6.某些弹出窗口阻止程序允许从用户启动的事件打开窗口,但不允许从其他事件打开的窗口

7.如果任何弹出窗口被阻止,通常由阻止程序(通过用户启动的事件)允许的弹出窗口有时也会被阻止。 一些例子

强制在新浏览器实例(而不是新选项卡)中打开窗口:

<button onclick="window.open('newpage.html', '_blank')" />
window.open('page.php', '', 'width=1000');
即使调用了另一个函数,以下事件仍将被视为用户启动的事件:

function o(){
  window.open('page.php');
}
$('button').addEvent('click', o);
function OpenNewTab(href)
{
    document.getElementById('linkDynamic').href = href;
    document.getElementById('linkDynamic').click();
}
以下事件不符合用户启动事件的条件,因为setTimeout会延迟它:

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

您可以使用此代码在“新建”选项卡中打开

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

我是从..

得到的,如果用户喜欢,强制使用选项卡有时是有用的。正如Prakash所述,这有时是由使用非用户启动的事件决定的,但有一些方法可以解决这一问题

例如:

$("#theButton").button().click( function(event) {
   $.post( url, data )
   .always( function( response ) {
      window.open( newurl + response, '_blank' );
   } );
} );
将始终在新浏览器窗口中打开“newurl”,因为“始终”功能不被视为用户启动。但是,如果我们这样做:

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

我们打开新的浏览器窗口或创建新的选项卡,这取决于用户启动的按钮单击中的用户偏好。然后,在从AJAX帖子返回后,我们只需将位置设置为所需的URL。瞧,如果用户喜欢,我们将强制使用选项卡。

Clear mini solution
$('')。submit()

我使用的最佳方式:

1-将链接添加到您的html:

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

3-只需使用您想要的链接调用OpenNewTab函数

这将在Chrome和Firefox的新选项卡中打开链接,可能还有更多我没有测试过的浏览器:

var popup  = $window.open("about:blank", "_blank"); // the about:blank is to please Chrome, and _blank to please Firefox
popup.location = 'newpage.html';
它基本上会打开一个新的空选项卡,然后设置该空选项卡的位置。请注意,这是一种黑客行为,因为浏览器选项卡/窗口行为实际上是浏览器和用户的领域、责任和选择

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

目前(Chrome 39)我使用以下代码打开一个新选项卡:

<button onclick="window.open('newpage.html', '_blank')" />
window.open('page.php', '', 'width=1000');

window.open('http://www.stackoverflow.com“,”\u blank“,“toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes”);
如果您使用
窗口。打开(url,“\u blank”)
,它将在Chrome、Firefox等浏览器上被阻止(弹出窗口阻止程序)

试试这个

$('#myButton').click(function () {
    var redirectWindow = window.open('http://google.com', '_blank');
    redirectWindow.location;
});
正在为此而工作


使用js fiddle for ajax window open

你确定你确认了什么吗?两个片段都有相同的结果。窗口是在选项卡中打开还是在新窗口取决于本地浏览器以及用户如何配置他们的浏览器-这不是你可以在javascript中指定的内容。我只想通过在Chrome和FF中进行测试来补充一下,我发现ut在您定义为“用户启动的事件”中使用window.open可以保持浏览器的默认操作。我的意思是,如果在Chrome中按住shift键并单击Chrome,则如果按住ctrl键(或按下鼠标中键),将显示一个新的浏览器窗口一个新的标签将在后台打开。这很好,您可以在不需要到处放置锚定标签的情况下制作一些东西。“如果window.open调用不是用户启动的事件的一部分,它将在一个新窗口中打开。”不,它几乎肯定不会被打开。截至2014年9月29日,最新的Firefox ESR和IE 11打开空白或窗口。当js调用时,新窗口中的打开链接使用空白作为窗口名。当前的Chrome没有那么简单。我测试了打开一个新窗口,通过顶部、左侧、宽度、高度、工具栏、位置、目录、状态、菜单栏、滚动条s、 和可调整大小,并依次省略其中的每一项。Chrome会在新选项卡中打开它们,但状态、菜单栏或滚动条被省略时除外。这似乎太武断了,很难相信,但根据经验就是这样。这里的示例:这很有效,但只有在用户单击处理程序中。否则,它会打开一个新窗口(但Firefox至少会阻止你,直到用户允许为止)@djsmith,我正在使用这个..并且只在IE7中面临这个问题。如果您有任何其他解决方案,请建议..谢谢..我注意到,如果您在chrome中的窗口上设置了断点。打开,那么浏览器将打开一个新窗口。让代码不中断似乎会导致打开一个新的选项卡。这是一个正常的解决方法,除非您的windoW.OPEN,函数的结果是需要5/6/7秒左右的时间。考虑函数是否向生成PDF的服务器发布数据,需要10秒。立即打开一个空白标签,用户盯着空白标签10秒。