本问题已经有最佳答案,请猛点这里访问。
有没有一种方法可以使链接在不使用JavaScript的情况下打开新的浏览器窗口(而非标签页)?
这将打开一个新窗口,而不是选项卡(使用JavaScript,但相当简洁):
οnclick="window.open('print.html',
有什么方法可以用这种方法控制在新窗口打开的位置吗?它默认设置为左上角,而Id希望将其居中。 (这是针对Twitter的共享意图,而非垃圾邮件。)
刚刚在三种浏览器上尝试过。适用于FF和Chrome,但不适用于IE 11。
在IE11上对我不起作用(精确版本:11.0.9600.18837,更新版本:11.0.48)
使用纯HTML不能影响这一点-每个现代的浏览器(=用户)都可以完全控制此行为,因为它过去曾被滥用很多。
您可以打开一个新窗口(HTML4)或一个新的浏览上下文(HTML5)。现代浏览器中的浏览上下文主要是"新标签",而不是"新窗口"。您对此没有任何影响,也无法"强制"现代浏览器打开新窗口。
为此,请使用锚元素的属性target [1]。您要查找的值是_blank [2]。
可以通过javascript强制打开新窗口-有关javascript解决方案,请参见下面的Ievgen优秀答案。
(!)但是,请注意,通过javascript打开窗口(如果未通过锚元素在onclick事件中完成)会受到弹出窗口阻止程序的阻止!
[1]此属性可以追溯到浏览器没有选项卡并且使用框架集是最新技术的时代。同时,此属性的功能已稍有更改(请参见MDN Docu) sub>
[2]还有一些其他值不再有意义(因为它们是为框架集而设计的),例如_parent,_self或_top。 sub>
我知道它有点老Q,但是如果您通过搜索解决方案到达这里,那么我通过jquery得到了一个不错的解决方案
jQuery('a[target^="_new"]').click(function() {
var width = window.innerWidth * 0.66 ;
var height = width * window.innerHeight / window.innerWidth ;
// Ratio the hight to the width as the user screen ratio
1,我对原始代码做了一些小的更改,现在它完全按照用户屏幕比例打开了新窗口(适用于横向桌面)
但是,我建议您使用以下代码(如果您使用移动设备,则在新标签页中打开链接)(感谢zvona回答其他问题):
jQuery('a[target^="_new"]').click(function() {
if (window.innerWidth <= 640) {
// if width is smaller then 640px, create a temporary a elm that will open the link in new tab
var a = document.createElement('a');
a.setAttribute("target","_blank");
var dispatch = document.createEvent("HTMLEvents");
dispatch.initEvent("click", true, true);
var width = window.innerWidth * 0.66 ;
var height = width * window.innerHeight / window.innerWidth ;
// Ratio the hight to the width as the user screen ratio
OP请求"没有javascript",但jQuery基于javascript。
您说对了,但是要么没有其他解决方案,要么更优雅。它反映了文档的原始行为。如果您不希望使用JavaScript解决方案?您可以只使用Christoph答案中的_blank。