JavaScript:location.href在新窗口/标签页中打开?

iam*_*esy 361 javascript

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

这是我到目前为止:

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

谁能帮我吗?

ale*_*lex 870

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

  • 值得一提的是:是否创建了新的选项卡或窗口,由**浏览器**(设置)决定. (96认同)
  • 浏览器阻止弹出窗口. (21认同)
  • @Phrogz我**批准您的格式:) (6认同)
  • @alex我编辑了这个答案,使重要的位可读.如果您不赞同我的格式,我是否可以建议缩短URL以使第二个参数适合未展开的区域? (4认同)
  • @ErickBest那是不对的.``_blank"`保证窗口/标签是新的.除了其他特殊名称之外的任何其他内容都为该窗口指定了特定名称,并且该目标的后续链接将重用该窗口.[的jsfiddle](http://jsfiddle.net/7kGnM/). (4认同)
  • 这只是在现代浏览器中触发弹出块通知,根本不模拟`_blank`锚点击. (2认同)

Kam*_*ski 26

纯js替代window.open

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

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

  • 于 2022 年 1 月 4 日在最新的 Chrome 中触发 Chrome 的内置弹出窗口拦截器。 (3认同)

小智 21

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

类似HTML的东西

<a id="anchorID" href="mynewurl" target="_blank"></a>
Run Code Online (Sandbox Code Playgroud)

然后javascript点击它如下

document.getElementById("anchorID").click();
Run Code Online (Sandbox Code Playgroud)

  • 我对这个解决方案充满希望,但它似乎仍然会触发弹出窗口(至少在Chrome中).我有一种感觉,浏览器知道它是一个javascript点击并以不同的方式对待它. (12认同)
  • 哈哈,theBell,如果你直接访问 DOM 元素 `[0]`,它就不是 jQuery (3认同)
  • $(“#anchorID”)[0] .click();`将此解决方案与jquery一起使用。 (2认同)

小智 10

使用location.href将用新的 url 替换当前的 url,即同一网页中的链接。

要打开新选项卡,您可以使用以下命令:

if (command == 'lightbox') {
 window.open("https://support.wwf.org.uk/earth_hour/index.php?type=individual", '_blank');
}
Run Code Online (Sandbox Code Playgroud)


use*_*639 7

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