以编程方式在选项卡上打开新页面


98

我正在尝试“强制” Safari或IE7 使用新标签打开新页面。

从编程上来说,我的意思是:

window.open('page.html','newtaborsomething');

1
我不确定我是否理解这一点-您是否正在开发可与IE一起使用的应用程序,并且要在新标签页上打开每个新页面?或者,您只想设置IE,以在单击链接时打开新标签页?还是要创建具有更多链接的任何站点,并希望它们分别打开?请使其更清晰。
Dungeo,

感谢您的所有评论和答案,我知道这不是什么大问题,在我的开发中也不应该成为问题,但这是一个客户请求,不是我只想知道的重要请求。问题是IE7和Safari无法使用javascript或target属性打开带有选项卡的弹出窗口,对吗?
里卡多·维加

Answers:


63

您不能直接控制它,因为它是由Internet Explorer用户控制的选项。

使用Window.open用不同的窗口名称打开页面会像一个弹出窗口,一个新的浏览器窗口中打开在新标签页中打开,如果用户配置的浏览器这样做。


当选择“让Internet Explorer决定如何打开弹出窗口”选项时,Internet Explorer使用什么条件来做出此决定?
Dead.Rabit

113

您可以在Firefox中正常工作,将属性target =“ _ newtab”添加到锚点,以强制打开新标签页。

<a href="some url" target="_newtab">content of the anchor</a>

在javascript中,您可以使用

window.open('page.html','_newtab');

话虽如此,我部分同意山姆。您不应强迫用户打开新页面或新选项卡,而不要用户单击链接之前向他们显示即将发生的情况的提示。

让我知道它是否也可以在其他浏览器上运行(目前,我没有机会在Firefox以外的其他浏览器上进行尝试)。

编辑:添加了对ie7的引用也许此链接可能有用
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/


6
感谢您的Firefox技巧,现在我更新了TargetKiller插件,删除了“ _newtab”和“ newtab”。:P
thenonhacker

1
非常感谢您的回答,但我确实知道Firefox会做到这一点(有些文字,未经我的测试,请注意,这并不总是正确的,有50-50的机会获得新的窗口或标签)。我也认为这不应该成为问题,但是,您知道客户:)
Ricardo Vega

2
在所有内部版本/平台上可能并非如此,但是Linux上的Firefox 3.5不允许您多次执行此操作...如果页面上有多个target =“ _ newtab”链接,请单击任意一个只会填充一个新的标签......也就是说,之后点击将覆盖任何在该选项卡中曾被打开。让我认为这实际上是在打开一个名为 “ _newtab” 的选项卡,而不是特定于浏览器的解决方法。
Rylee Corradini 2010年

55
我很确定“ _newtab”是没有意义的,除非有人有相反的说明。您要做的只是打开一个名为 _newtab 的窗口(这就是为什么所有与该目标的后续链接都在同一窗口中打开的原因)。您可以定位“ foo”或“ bar”,然后看到相同的行为。唯一知名的目标是_blank,_self,_parent和_top。 htmlcodetutorial.com/linking/_A_TARGET.html
Tom Lianza 2011年

43

那些尝试使用以下内容的人:

window.open('page.html', '_newtab');

应该真正看一下window.open方法。

您要做的就是告诉浏览器打开一个名为“ _newtab”的新窗口并将page.html加载到其中。您加载的每个新页面都将加载到该窗口中。但是,如果用户将其浏览器设置为在新标签页而不是新窗口中打开新页面,它将打开一个标签页。无论如何,它对窗口或标签使用相同的名称。

如果要在不同的窗口或选项卡中打开不同的页面,则必须将新窗口/选项卡的名称更改为其他名称,例如:

window.open('page2.html', '_newtab2');

当然,新窗口/选项卡的名称可以是诸如page1,page2,page3等的任何名称,而不是_newtab2。


3
知道他的东西。“ _newtab”不是保留名称。“ _blank”是一种特殊的东西,它会打开另一个未指定且未命名的窗口/标签-您可以反复使用该窗口/标签。“ _newtab”不是特殊的,除了它是您给新标签页(默认)或窗口指定的名称之外,浏览器会使用发送给它的任何URL不断刷新该标签页。
BradChesney79

14

用户是否要使用新选项卡或新窗口取决于用户,修改此行为不是开发人员的责任。我认为您无法做到。

我的宠儿-我讨厌当网站强迫我在新窗口/标签页中打开时-我完全有能力自己做出决定。特别是当他们使用JavaScript进行操作时-确实没有帮助。


1
+1对Sam-在标签页或窗口中打开的新页面是浏览器(和用户)特定的选择。通常,当任何站点打开新窗口时,我都讨厌它。
理查德·埃夫2009年

除此之外:在“严格”定义中,没有有效的属性“目标”,因为它不会打扰用户。尝试一下:validator.w3.org
guerda,2009年

4
我喜欢在家中打开一批标签页,因此在这种情况下我就是用户。提醒您,有例外。
Mark Essel

7
虽然我同意,当网站强制采取措施时可能会很烦人,但我认为,简单地指出您在不考虑某人可能要执行此操作的原因的情况下不应执行某项操作有点无益。网站通常会在新标签页中打开内容,特别是在外部网站链接中,或者在活动页面被新内容替换无济于事的情况下,这并不是完全意外的行为。我还建议这实际上不是问题的答案,更适合作为对原始帖子的评论。
andyface 2012年

1
我不同意,假设用户的默认设置是每个Web应用程序而不是每个浏览器的设计选择。浏览器可以订阅默认值,而应用程序则不可以。另外,如果浏览器为用户提供了一种方法来覆盖应用程序默认值/浏览器默认值,那么这是两全其美的方法。用户>应用程序>浏览器。
德里克·里兹

8

你已经尝试过了吗

var open_link = window.open('','_blank');
open_link.location="somepage.html";

这个跨浏览器兼容吗?似乎可以在IE8中使用,担心将来的版本或其他浏览器。
n00b

是的..它与跨浏览器兼容。直到现在我都没问题:D
Thurein Soe 2013年

5

我在Chrome浏览器中发现了

window.open('page.html','_newtab')

将只工作一次。

您可以使用:

window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));

打开多个新选项卡。


10
这是因为在Chrome中,_newtab只是一个名称,而您要求它在名为“ _newtab”的标签中打开页面
w00t

3

我在jQuery中使用的代码:

$("a.btn_external").click(function() {
    url_to_open = $(this).attr("href");
    window.open(url_to_open, '_blank');
    return false;
});

这对于区分孩子中父母的点击事件很有用。通过使用此方法,您不会触发父级的click事件。


8
为什么不简单地使用普通的旧html?<a href="page.html" target="_blank">foo</a>
pixelastic 2012年

1
@pixelastic“通过使用此方法,您不会触发父级的click事件。”
迈克尔·布莱克本


0

如果您愿意,可以使用此方法,虽然有点笨拙,但可以提供所需的功能:

jQuery('<a/>', {
    id: 'foo',
    href: 'http://google.com',
    title: 'Become a Googler',
    rel: 'external',
    text: 'Go to Google!',
    target:'_blank',
    style:'display:none;'
}).appendTo('#mySelector');

$('#foo').click()

你能提供一个jsfiddle吗?
Xenology 2013年

-2

如果您可以调用批处理文件(我将php与XP sp2和IE8结合使用,则可以使用IE7,不知道如何操作),这可能会起作用。在您的.bat文件中使用以下(或类似文件)打开Windows:启动“” C:\ Progra〜1 \ Intern〜1 \ iexplore“ http://www.site.com”。引号和C:\ Progr ...等之间没有空格。在某些情况下,这可能会开始打开新窗口(即target =“ _ blank”)而不是新选项卡,但是可以使用到一定程度;没有经过广泛测试。要在常规批处理文件(CMD.exe)中使用此功能,您可能需要已打开一个窗口。只是分享我偶然发现的东西。编辑为澄清。


-7
<a href="http://www.google.com/" target="_self">New Tab Example</a>

在IE7中工作。

问候,

格伦


8
Glenn与OP要求的相反。_self将在相同的窗口或框架中打开文档。
travega 2011年

同样,这不是以编程方式打开的方式。令人惊讶的是,它如何通过此答案获得+10 rep(+ 3 / -10)。
vusan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.