2017-05-01 6 views
0

Das Seltsamste passiert. Dieses Klickereignis öffnet eine leere neue Registerkarte und navigiert dann auf der ursprünglichen Registerkarte zur richtigen Seite. Was ist los und wie repariere ich es?Window.open öffnende leere neue Registerkarte?

Ich überprüfte den Inspektor für ein target = "_ blank" -Attribut, das vielleicht später hinzugefügt worden war und nichts. Ich habe in meinem Code nach nichts gesucht. Es macht also keinen Sinn, dass das Attribut _blank in window.open eine leere neue Registerkarte öffnet und zur URL auf der gleichen Registerkarte navigiert.

Danke.

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

Markup:

<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> 
+0

Ihr Click-Ereignis auf dem 'img auslöst 'tag und öffne ein neues, leeres Fenster (das heißt, du hast es mit' window.open (url, "_blank") gemacht; ') Dein' a'-Tag macht was es tun soll und sendet den Benutzer an den loca In 'href' angegebene –

+0

Es tut genau das, was Ihr Code ihm sagt. Öffnen Sie ein neues Fenster in einem neuen Tab. und dann leite mich auf eine andere Seite um. Sie sollten die URL in window.open-Tag einfügen. –

+0

Sie brauchen nicht sowohl 'href' auf' a'-Tag und 'onClick'-Event, das ein neues Fenster öffnet, wählen Sie einen von ihnen. –

Antwort

1

Ich nehme an, Sie in einem neuen Tab zu dem Anker href navigieren möchten, während in der aktuellen Seite zu bleiben. Wenn es richtig ist, müssen Sie:

Der neue Click-Handler:

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