JavaScript:location.href在新窗口/选项卡中打开?


389

我有来自第三方开发人员的JavaScript文件。它具有一个has链接,该链接将当前页面替换为目标页面。我想在新标签页中打开此页面。

这是我到目前为止的内容:

if (command == 'lightbox') {
 location.href="https://support.wwf.org.uk/earth_hour/index.php?type=individual";
}

谁能帮我吗?

Answers:


930
window.open(
  'https://support.wwf.org.uk/earth_hour/index.php?type=individual',
  '_blank' // <- This is what makes it open in a new window.
);

102
值得一提:是否创建新标签页或窗口,由浏览器(设置)决定。
jAndy 2011年

4
@alex我编辑了此答案以使重要的部分易于阅读。如果您不同意我的格式,是否可以建议缩短URL,以便第二个参数适合展开的区域?
Phrogz

5
@ErickBest那是不正确的。"_blank"保证窗口/标签是新的。除了其他特殊名称外,其他任何东西都为该窗口指定了特定名称,并且指向该目标的后续链接将重用该窗口。jsFiddle
亚历克斯

2
这只是在现代浏览器中触发弹出窗口阻止通知,根本不模拟_blank锚定点击。
内森·霍恩比

22
浏览器阻止弹出窗口。
Jitendra Pancholi 2015年

24

如果要location.href避免弹出问题,可以使用空的<a>ref,然后使用javascript单击它。

类似HTML

<a id="anchorID" href="mynewurl" target="_blank"></a>

然后用javascript单击它,如下所示

document.getElementById("anchorID").click();

13
我对这个解决方案充满希望,但是它似乎仍然会触发弹出窗口块(至少在Chrome中是这样)。我有一种感觉,浏览器意识到这是一个javascript点击,并以不同的方式对待它。
内森·霍恩比

1
谢谢你,内森。你说得很对。您仍然会收到弹出框消息。我以为我已经治愈了。从理论上讲,它应该起作用。安德鲁
菲尔德(

2
$("#anchorID")[0].click(); 将此解决方案与jquery一起使用。
theBell 2016年

1
大声笑theBell,如果您直接访问DOM元素,则不是jQuery[0]
Andre Figueiredo,

7

您可以使用打开新窗口window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');。如果要在新选项卡中打开它,请在两个选项卡中打开当前页面,然后允许脚本运行,以便同时获取当前页面和新页面。


6

纯js替代window.open

let a= document.createElement('a');
a.target= '_blank';
a.href= 'https://support.wwf.org.uk/';
a.click();

这是工作示例(stackoverflow片段不允许打开)


0

例如:

    $(document).on('click','span.external-link',function(){
        var t               = $(this), 
            URL             = t.attr('data-href');        
        $('<a href="'+ URL +'" target="_blank">External Link</a>')[0].click();

    });

工作示例


浏览器阻止了弹出窗口。
Millar248 '19

1
这意味着您有一个adblock或其他阻止它的东西。默认行为应在正常情况下
起作用

0

您还可以打开一个新标签,该标签使用以下参数调用操作方法:

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');

是否需要第一行和第二行?如果没有reportDateand url变量,是否可以使用?
学习乐趣

您可以删除参数(reportDate),但是url var很重要,因为它包含对action方法的调用。
Primoshenko
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.