window.open()函数在一个窗口中打开两个带有两个不同URL的新浏览器窗口,而不是一个URL

时间:2018-04-27 08:59:04

标签: javascript

使用浏览器IE9和chrome。 试图连接两个网址以形成一个网址: host1 = "https://home-page.com"host2= "https://homet3-page.com"。 我使用替换函数host2=host1.replace("home","homet3")将home替换为homet3。 但是这里有两个窗口打开一个带有URL的"https://home-page.com/list/self" 其次是网址为"https://homet3-page.com/me/myself/?browserOffset=0"

以下是代码: Javascript函数和HTML代码:

  

       function openWin() {
        var host1 = "https://home-page.com";
        var host2 = host1.replace("home","homet3"); 
        window.open(host1+"/id?"+host2+"/me/myself/?browserOffset=0");
       }

<a class="list" href="../../../list/self" onclick="openWin()" target="_blank">Click Link</a>

3 个答案:

答案 0 :(得分:1)

它会触发两次,因为<a href></a>标记会触发您进入新页面,onclick="openWin()"也是如此。仅触发一次的最简单方法是将链接标记更改为另一个标记,例如按钮。

答案 1 :(得分:1)

打开两个窗口的原因是您在target="_blank"标记中使用<a>属性。删除此属性,然后编辑处理程序:

function openWin() {
        var host1 = "https://home-page.com";
        var host2 = host1.replace("home","homet3"); 
        window.open(host1+"/id?"+host2+"/me/myself/?browserOffset=0", "_blank");
       }

答案 2 :(得分:0)

在为此挣扎了一段时间后添加了答案 (7/9/2021)。上面的答案之一说要删除 a 标签中的 target="_blank" ,这不起作用。除了我正在路由到单击链接的当前窗口之外,我仍然打开了两个窗口。我发现修复的是向函数调用添加参数:

$(selector).on('click', function(e) {
    e.preventDefault();
    window.open($(this).attr('href'), '_blank');
});

preventDefault 行阻止了默认操作,即锚标记显然会将您发送到链接。因此,通过阻止默认操作,您只会允许此点击功能通过。