窗口打开时为什么会是一个空白的新标签页?

3
最奇怪的事情发生了。这个点击事件会打开一个空白的新标签页,然后在原来的标签页中导航到正确的页面。发生了什么,我该如何解决?
我检查了检查器,看是否有target="_blank"属性被添加或者代码中是否有搜索结果,但都没有找到。因此,window.open上的_blank属性打开一个空白的新标签页并在同一标签页中导航到URL是毫无意义的。
谢谢。
$(".homedepot, .amazon, .walmart").on('click', function() {
                url = $(this).attr('href');
                window.open(url , "_blank");
                trackOutboundLink(url);
            });

    //var path = window.location.path;
                        var trackOutboundLink = function(url) {
                            var loc = function getLocation(url) {
                                var match = href.match(/^(https?\:)\/\/(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);
                                 return match && {
                                 href: href,
                                 protocol: match[1],
                                 host: match[2],
                                 hostname: match[3],
                                 port: match[4],
                                 pathname: match[5],
                                 search: match[6],
                                 hash: match[7]
                                }
                            }



                            newURL = loc.protocol + "//" + loc.host;
                            console.log(newURL)


                            ga('send', 'event', 'outbound click', 'click', newURL, {
                                'transport': 'beacon',
                                'hitCallback': function(){console.log("");}
                            });
                        }

标记语言:

<a class="ilHide" href="<%= product.data["product.buy_amazon"].value[0].text %>"><img class="amazon" style="width:200px; position: relative; right: .5rem;" src="images/amazon2.jpeg" alt="Amazon" /></a>
<a class="ilHide" href="<%= product.data["product.buy_homedepot"].value[0].text %>"><img class="homedepot" style="display:inline;position:relative;" src="images/homedepot.png" alt="Home Depot" /></a>
<a class="ilHide" href="<%= product.data["product.buy_walmart"].value[0].text %>"><img class="walmart" style="width:200px;" src="images/walmart.jpeg" alt="Walmart" /></a>

你的点击事件在img标签上触发,并打开一个新的空白窗口(这是你使用window.open(url, "_blank");告诉它要做的)。你的a标签正在执行它应该执行的操作,将用户发送到href中指定的位置。 - Jen R
它正在按照您的代码所告诉它要做的事情。在新标签页中打开一个新窗口,然后将我重定向到另一个页面。您应该将URL放在window.open标记中。 - Nawed Khan
您不需要同时在a标签中使用href和打开新窗口的onClick事件,选择其中一个即可。 - Omri Luzon
1个回答

1
我假设您想在当前页面的情况下在新标签页中导航到锚点href。如果是正确的,您需要:

新的点击处理程序:

$(".homedepot, .amazon, .walmart").on('click', function(e) {
    e.preventDefault();
    url = $(this).parent().attr('href');
    window.open(url , "_blank");
    trackOutboundLink(url);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接