2017-08-29 1 views
2

Ich versuche, ein Drittanbieter-Skript zu debuggen.Firefox OnClick-Ereignis funktioniert nicht

Es funktioniert gut in Chrome. Aber Firefox wird das onclick-Ereignis nicht registrieren.

Irgendeine Idee, warum FireFox nicht nett spielen wird?

Ich habe versucht, return false; wie vorgeschlagen here hinzuzufügen, aber es hat nicht funktioniert, Hinzufügen, dass über die letzte schließende Klammer nur produziert mehr Fehler, wenn in der Konsole angezeigt.

\t function ac_event(event, eventdata) { 
 
    
 
    return ajax({ 
 
     url: activecampaignevent.ajax_url, 
 
\t \t type: 'POST', 
 
     data: { 
 
\t \t \t action: 'ac_event', 
 
\t \t \t event: event, 
 
      eventdata: eventdata 
 
\t \t }, 
 
\t \t success: function (response) { 
 
\t \t \t console.log('response', response); 
 
\t \t } 
 
    }); 
 
    
 
    function ajax(options) { 
 
     var request = new XMLHttpRequest(); 
 
     var url = options.url; 
 
     var data = encodeData(options.data); 
 
     
 
     if (options.type === 'GET') { 
 
      url = url + (data.length ? '?' + data : ''); 
 
     } 
 
     request.open(options.type, options.url, true); 
 
     request.onreadystatechange = onreadystatechange; 
 
     
 
     if (options.type === 'POST') { 
 
      request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
 
      request.send(data); 
 
     } else { 
 
      request.send(null); 
 
     } 
 
     return; 
 
     
 
     function onreadystatechange() { 
 
      if (request.readyState === 4 && request.status === 200){ 
 
       options.success(request.responseText); 
 
      } 
 
     } 
 
     function encodeData(data) { 
 
      var query = []; 
 
      for (var key in data) { 
 
       var field = encodeURIComponent(key) + '=' + encodeURIComponent(data[key]); 
 
       query.push(field); 
 
      } 
 
      return query.join('&'); 
 
     } 
 
    } 
 

 
}
<a href="https://somelink.com/" onclick="ac_event('Link Clicked', 'Some Link');">Click this link to test</a>

+0

Der Code ist so alt. Warum verwenden Sie keine Bibliotheken wie jQuery? Sie brechen das Standardereignis '' link nie ab. Erwägen Sie die Verwendung von 'event.preventDefault()'. – Raptor

+0

@Raptor Es ist nicht mein Code. JavaScript ist nicht meine Stärke. Ich versuche nur etwas zu reparieren, das mir geschenkt wurde. Können Sie aktualisierten Code bereitstellen, der das Problem beheben wird? – bennygill

Antwort

0

können Sie Ereignis in Javascript erstellen und zuweisen Ereignis mit Browser mit prevent zu stoppen.

document.querySelector("#LinkID").addEventListener("click", function(event){ 
      //do your code here 
      alert("preventDefault will stop you to go") 
      event.preventDefault(); 
     }, false); 
+0

Es tut mir leid, dass ich Ihnen hier nicht ganz gefolgt bin (ich bin ziemlich neu in JS). Könnten Sie meinen Code aktualisieren, um Ihre Antwort hinzuzufügen? – bennygill

+0

Überprüfen Sie diese Geige nach dem Hinzufügen von Return false Sie Code funktioniert in Mozilla und Chrome http://jsfiddle.net/yogesh078/WQXXT/6551/ – Yogesh

+0

Ja, es scheint, dass Ihre Geige funktioniert unter Firefox. Und mit weiteren Tests funktioniert es mit oder ohne "Return false". Aber leider, wenn ich diesen Code auf meiner Seite verwende, wird der onclick trotzdem nicht registriert. – bennygill