2017-08-29 92 views
2

我試圖調試第三方腳本。Firefox onClick事件不起作用

它在Chrome中正常工作。但Firefox不會註冊onclick事件。

任何想法爲什麼FireFox不會很好玩?

我試着加return false;作爲建議here但它沒有奏效,並補充說,在最後一個右括號之上在控制檯中查看時會產生更多的錯誤。

\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

代碼太舊了。你爲什麼不使用像jQuery這樣的庫?你永遠不會取消''鏈接的默認事件。考慮使用'event.preventDefault()'。 – Raptor

+0

@Raptor這不是我的代碼。 JavaScript並不是我的強項。我只是試圖修理一些有天賦的東西給我。你能提供更新的代碼來解決問題嗎? – bennygill

回答

0

你可以創建JavaScript事件與瀏覽器事件指派其停止使用的preventDefault。

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

抱歉沒有在這裏完全關注你(我幾乎是全新的JS)。你能否更新我的代碼以包含你的答案? – bennygill

+0

添加返回後檢查此小提琴返回false您的代碼在mozilla和chrome中工作http://jsfiddle.net/yogesh078/WQXXT/6551/ – Yogesh

+0

是的,它似乎是你的小提琴在Firefox上工作。通過進一步的測試,它可以在有或沒有「返回錯誤」的情況下工作。但不幸的是,在我的網站上使用該代碼時,它仍然不會註冊onclick。 – bennygill