Chrome, Javascript, window.open in new tab
在镶边中,这将在新选项卡中打开:
<button onclick="window.open('newpage.html', '_blank')" />
这将在新窗口中打开(但我希望这也在新选项卡中打开:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
这可行吗?
在镶边中,这将在新选项卡中打开:
<button onclick="window.open('newpage.html', '_blank')" />
这将在新窗口中打开(但我希望这也在新选项卡中打开:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
这可行吗?
您无法直接控制它,因为它是由Internet Explorer用户控制的选项。
使用 Window.open 打开具有不同窗口名称的页面将在新的浏览器窗口中打开,如弹出窗口,或者在新选项卡中打开(如果用户将浏览器配置为这样做)。
编辑:
更详细的说明:
1.在现代浏览器中,window.open将在新选项卡中打开,而不是弹出窗口。
2.您可以通过在第3个参数中指定选项来强制浏览器使用新窗口(“弹出窗口”
3. 如果 window.open 调用不是用户启动事件的一部分,它将在新窗口中打开。
4. “用户启动的事件”不必调用相同的函数,但它必须源自用户单击调用的函数
5. 如果用户启动的事件委托或延迟函数调用(在未绑定到单击事件的事件侦听器或委托中,或者通过使用 setTimeout),它将失去“用户启动”的状态
6.某些弹出窗口阻止程序将允许从用户启动的事件打开窗口,但不允许以其他方式打开的窗口。
7.如果阻止任何弹出窗口,则阻止程序通常允许的弹出窗口(通过用户启动的事件)有时也会被阻止。一些例子...
强制在新的浏览器实例中打开窗口,而不是在新选项卡中打开:
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);
如果用户喜欢,强制使用选项卡有时很有用。正如Prakash上面所说,这有时是由使用非用户发起的事件决定的,但是有办法解决这个问题。
例如:
$("#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;
} );
} );
我们打开新的浏览器窗口或创建新选项卡,这取决于用户首选项在按钮点击中单击哪个是用户发起的。然后,我们只需在从AJAX帖子返回后将位置设置为所需的URL。瞧,如果用户喜欢,我们会强制使用选项卡。