在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>
这个可行吗?
由于这是一个由Internet Explorer用户控制的选项,因此您无法直接控制它。
使用不同的窗口名称使用Window.open打开页面将在新的浏览器窗口中打开,如弹出窗口,或者在用户配置浏览器以这样做的情况下,在新选项卡中打开。
编辑:
更详细的解释:
1. 在现代浏览器中,window.open将在新标签页中打开,而不是弹出窗口。
2. 您可以通过在第三个参数中指定选项来强制浏览器使用新窗口(“弹出”)。
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' );
} );
} );
由于“always”功能不被视为用户启动,因此将始终在新的浏览器窗口中打开“newurl”。但是,如果我们这样做:
$("#theButton").button().click( function(event) {
var newtab = window.open( '', '_blank' );
$.post( url, data )
.always( function( response ) {
newtab.location = newurl + response;
} );
} );
我们根据用户的偏好,在按钮点击时打开新的浏览器窗口或创建新的标签页,这是由用户主动发起的。然后在从 AJAX post 返回后,将位置设置为所需的 URL。如果用户喜欢,我们就强制使用标签页。
window.open(url, '_blank', 'noopener')
$('#myButton').click(function () {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
});
这个是用于展示工作的js fiddle:http://jsfiddle.net/safeeronline/70kdacL4/2/
这个是用于ajax窗口打开的工作的js fiddle: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.
- Benjamin Crouzier这将在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 请求之后),但是浏览器不会将其视为用户启动的点击事件,并可能阻止弹出窗口。
$window
只是AngularJS使用window
的方式而已。你可以直接使用window
。更多信息请参考:https://docs.angularjs.org/api/ng/service/$window - Magne清除小型解决方案 $ ('<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函数并传入您想要的链接即可