在chrome中,这会在新标签页中打开:
<button onclick="window.open('newpage.html', '_blank')" />
这会在新窗口中打开(但我也想在新标签页中打开它:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
这可行吗?
在chrome中,这会在新标签页中打开:
<button onclick="window.open('newpage.html', '_blank')" />
这会在新窗口中打开(但我也想在新标签页中打开它:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
这可行吗?
Answers:
您不能直接控制它,因为它是由Internet Explorer用户控制的选项。
使用Window.open使用其他窗口名称打开页面将在新的浏览器窗口(如弹出窗口)中打开,或者在用户配置了浏览器的情况下在新选项卡中打开。
编辑:
更详细的解释:
1.在现代浏览器中,window.open将在新选项卡中打开,而不是弹出窗口。
2.您可以通过在第3个参数中指定选项来强制浏览器使用新窗口(“弹出窗口”)
3.如果window.open调用不是用户启动的事件的一部分,它将在新窗口中打开。
4. “用户启动的事件”不必具有相同的函数调用–但它必须起源于用户单击所调用的函数
5.如果用户启动的事件委托或推迟了函数调用(例如,在未绑定到click事件的事件侦听器或委托中,或通过使用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”,因为“始终”功能不被认为是用户启动的。但是,如果执行此操作:
$("#theButton").button().click( function(event) {
var newtab = window.open( '', '_blank' );
$.post( url, data )
.always( function( response ) {
newtab.location = newurl + response;
} );
} );
我们将打开新的浏览器窗口或创建新的标签,具体取决于由用户启动的按钮点击中的用户偏好。然后,我们将位置从AJAX帖子返回后设置为所需的URL。瞧,如果用户喜欢,我们会强制使用标签。
如果您使用window.open(url, '_blank')
,它将在Chrome,Firefox等上被阻止(弹出窗口阻止程序)
试试这个,
$('#myButton').click(function () {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
});
这个http://jsfiddle.net/safeeronline/70kdacL4/2/的工作js小提琴
用于ajax窗口的工作js小提琴打开http://jsfiddle.net/safeeronline/70kdacL4/1/
目前(Chrome 39),我使用以下代码打开新标签页:
window.open('http://www.stackoverflow.com', '_blank', 'toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes');
当然,这可能会在将来的Chrome版本中发生变化。
如果您无法控制用户使用的浏览器,则使用此方法是个坏主意。它可能无法在将来的版本中或使用不同的设置。
VM646 js:12 Blocked opening 'http://www.stackoverflow.com/' in a new window because the request was made in a sandboxed frame whose 'allow-popups' permission is not set.
这将在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请求之后),但随后浏览器将无法将其识别为用户启动的点击事件,并可能阻止弹出窗口。
清晰的迷你解决方案 $('<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-添加JS功能:
function OpenNewTab(href)
{
document.getElementById('linkDynamic').href = href;
document.getElementById('linkDynamic').click();
}
3-只需使用所需的链接调用OpenNewTab函数