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

IT技术 javascript window.open window.location
2021-02-03 04:47:44

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

这是我到目前为止:

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

谁能帮我吗?

6个回答
window.open(
  'https://support.wwf.org.uk/earth_hour/index.php?type=individual',
  '_blank' // <- This is what makes it open in a new window.
);
@alex 我编辑了这个答案以使重要的部分可读。如果您不同意我的格式,我可以建议缩短 URL 以使第二个参数适合取消滚动区域吗?
2021-03-15 04:47:44
这只会在现代浏览器中触发弹出块通知,根本不会模拟_blank锚点点击。
2021-03-17 04:47:44
@ErickBest 那是不正确的。"_blank"保证窗口/选项卡是新的。其他任何东西(除了其他特殊名称)都会为该窗口指定特定名称,并且指向该目标的后续链接将重用该窗口。js小提琴
2021-03-18 04:47:44
浏览器阻止的弹出窗口。
2021-03-18 04:47:44
值得一提的是:是否创建新选项卡或窗口,由浏览器(设置)决定
2021-04-10 04:47:44

如果你想用来location.href避免弹出问题,你可以使用一个空的<a>ref,然后使用javascript点击它。

类似于 HTML

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

然后javascript点击它如下

document.getElementById("anchorID").click();
谢谢内森。你说的很对。您仍然会收到一条弹出阻止消息。我以为我已经治好了。理论上它应该有效。安德鲁
2021-03-13 04:47:44
Lol theBell,如果您直接访问 DOM 元素,则它不是 jQuery [0]
2021-03-19 04:47:44
这是最好的解决方案。也适用于 safari。
2021-03-20 04:47:44
我对这个解决方案充满希望,但它似乎仍然会触发弹出块(至少在 Chrome 中)。我有一种感觉,浏览器知道这是一次 javascript 单击并以不同的方式对待它。
2021-03-22 04:47:44
$("#anchorID")[0].click(); 将此解决方案与 jquery 一起使用。
2021-04-06 04:47:44

纯js替代window.open

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

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

这个解决方案。+++
2021-04-11 04:47:44

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

例如:

    $(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();

    });

工作示例

这意味着您要么有一个广告块,要么有其他东西来阻止它。默认行为应该在正常条件下工作
2021-03-24 04:47:44
浏览器阻止的弹出窗口。
2021-03-26 04:47:44