当前位置:  开发笔记 > 编程语言 > 正文

JavaScript在新窗口中打开,而不是标签

如何解决《JavaScript在新窗口中打开,而不是标签》经验,为你挑选了9个好方法。

我有一个选择框时,选择window.open(url)一个项目时调用.Firefox默认会在新标签页中打开该页面.但是,我希望页面在新窗口中打开,而不是新选项卡.

我怎么能做到这一点?



1> DNS..:

给窗口一个'specs'参数,宽度/高度.请参阅此处了解所有可能的选项.

window.open(url, windowName, "height=200,);

指定宽度/高度时,它将在新窗口中打开它而不是选项卡.


在今天的浏览器中不起作用.默认情况下,它们都会在当前窗口的新选项卡中打开一个新窗口.它还取决于浏览器选项.您无法使用JavaScript控制它.
在IE6,FF 3.6,Chrome 9.0中工作
好小费.我认为Opera仍将在一个标签中打开这个:).
在FF 11.0中不再起作用,[见我的问题](http://stackoverflow.com/questions/9956827/window-openurl-windowname-opts-opens-in-new-tab-instead-of-new-窗口在杉)!@詹姆士
这不是你在新窗口中执行"height = 200,width = 200"的事实.这只是放置额外参数的事实(位置,状态等......无关紧要)
不认为它适用于FF或Chrome(两者的beta版本,但不知道关于非beta的行为).

2> 小智..:

您不需要使用高度,只需确保使用_blank,如果没有它,它将在新选项卡中打开.

对于空窗口:

window.open('', '_blank', 'toolbar=0,location=0,menubar=0');

对于特定的URL:

window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');


但是,如果我想给它起个名字怎么办?
+1非常好.这正是我在寻找的东西:-)

3> Jordan S. Jo..:

我可能错了,但据我所知,这是由用户的浏览器偏好控制的,我不相信这可以被覆盖.


我告诉过你我的代码有效.我将它键入firebug控制台:window.open("","poop","height = 200,width = 200,modal = yes,alwaysRaised = yes"); 你猜怎么着???有用!!!!!!
是的它有效,但这似乎有点像黑客.Firefox的编写方式是打开新窗口vs tab是浏览器首选项,而不是javascript首选项.因此,您的建议在较新版本的Firefox中不会起作用是可行的.我宁愿不依赖黑客.
要明确的是,我并不是说这是一个javascript hack.添加窗口高度和宽度显然是js window.open方法的特征.开放方法(http://www.w3schools.com/HTMLDOM/met_win_open.asp)我的意思是操纵firefox的预期行为.
我本不会把它称为黑客攻击.你只是在妥协你真正喜欢的行为,而是实现它.

4> 小智..:

尝试:

window.open("", [window name], "height=XXX,);

我有一些代码可以说你的意思,但其中有很多参数.我认为这些是最低限度的,让我知道如果它不起作用,我会发布其余的.



5> Peter..:

好的,经过大量的测试,我的结论是:

执行时:

     window.open('www.yourdomain.tld','_blank');
     window.open('www.yourdomain.tld','myWindow');

或者你在目标字段中放置的任何内容,这将不会改变任何内容:新页面将在新选项卡中打开(因此取决于用户首选项)

如果您希望在新的"真实"窗口中打开页面,则必须添加额外的参数.喜欢:

window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');

经过测试,看起来你使用的额外参数,并不重要:这不是你把"这个参数"或"另一个"创建新的"真实窗口"但事实上有新参数的事实(s ).

但有些东西很混乱,可能解释了很多错误的答案:

这个:

 win1 = window.open('myurl1', 'ID_WIN');
 win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');

还有这个:

 win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
 win1 = window.open('myurl1', 'ID_WIN');

不会给出相同的结果.

在第一种情况下,当您首次打开没有额外参数的页面时,它将在新选项卡中打开.在这种情况下,由于您提供的名称,第二个调用也将在此选项卡中打开.

在第二种情况下,当您使用额外参数进行第一次调用时,页面将在新的" 真实窗口 "中打开.在这种情况下,即使第二次调用是在没有额外参数的情况下进行的,它也将在这个新的" 真实窗口 "中打开 ......但是相同的标签!

这意味着第一次调用很重要,因为它决定了放置页面的位置.



6> 小智..:

您可以尝试以下功能:


用于执行的HTML代码:

google search


`popup.location = URL;`的目的是什么?`window.open()`调用应该将它打开到正确的URL,并且在你的代码示例中,`URL`没有被定义,因此它将回退到实验(而不是广泛支持)[URL对象]( https://developer.mozilla.org/en-US/docs/Web/API/URL).虽然使用它是有争议的,但我很好奇它在这里使用的动机是什么?

7> CookieOfFort..:

你不应该这样做.允许用户拥有他们想要的任何偏好.

Firefox默认情况下会这样做,因为在新窗口中打开页面很烦人,如果不是用户所希望的话,绝不允许页面这样做.(Firefox允许您在新窗口中打开选项卡,如果您这样设置).


你错了.顺便说一句,说"你不应该"是不恰当的,特别是如果它是老板想要的东西
@theman_on_vista:说服你的老板是你的责任.贵公司已授予您解决设计问题的责任.这包括指出错误的设计理念.
设计师可以选择弹出窗口或制表符.虽然我是一个总是喜欢标签的用户,但我发现有时候,设计确实需要弹出窗口或真正需要标签.它应该在程序员的领域才能实现.抛开哲学上的差异,这种评论完全不适合编程参考网站.在这种情况下,它不是"我应该吗?" 题.这是"我怎么样?"
让我们尽量保持评论的实用性和实用性.我们可以不同意而不是侮辱.
如此真实.屏幕属于用户,没有其他人.

8> Tom Lianza..:

有趣的是,我发现如果你为window.open的第三个属性传入一个字符串(而不是空字符串或属性列表),它将在Chrome,Firefox和IE的新选项卡中打开.如果缺席,行为就不同了.

所以,这是我的新电话:

 window.open(url, windowName, '');



9> MuniR..:

关键是参数:

如果您提供 参数[Height ="",Width =""],则它将在新窗口中打开.

如果您不提供参数,则它将在新选项卡中打开.

在Chrome和Firefox中测试过

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有