文章出處

 

這兩天碰到的問題,IE6下某個js生成的a節點,設置了href="javascript:;",點擊時觸一個ajax請求,但在IE6下就是無法執行succese里的內容,所以就用setTimeout設置了個延時執行暫且可以解決問題。后來同事(感謝勇哥和趙美人的大力支持~)用fiddler查看時提示請求被終止:

于是四方找答案~最終找到刀爺的博客~毫無節操的copy過來了~原地址:http://stylechen.com/ie6-aborted-ajax.html

原文:

場景還原:給a標簽綁定了一個click事件用來觸發ajax請求,在IE6中,請求時常會被中斷,在非IE6中都一切正常。

 
<a href="javascript:;" id="btn">click me</a> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
  var url = "http://api.flickr.com/services/" 
    "feeds/photos_public.gne?tags=car&" 
    "tagmode=any&format=json&jsoncallback=?"; 
  $( "#btn" ).click(function(){ 
    $.getJSON( url, function( data ){ 
      alert(  data ); 
    });   }); 
</script>

在IE6中使用Fiddler2監視請求,經常會出現”aborted”,折騰了許久,相當的詭異。后來將a標簽換成button,請求正常,最后經提醒,可能是a標簽的默認事件中斷了請求。但是,在HTML代碼中,已經將a標簽的href設置成了”javascript:;”,通常這樣是可以阻止默認事件了(頁面跳轉)。a標簽的click事件會先執行,然后才執行href的跳轉,如果href是一段javascript語句,這個時候就會執行。IE6在執行href的javascript語句時就中斷了click觸發的ajax請求。使用href=”javascript:;”是為了阻止默認事件,將阻止默認事件的動作移到click事件中就可以解決問題了,這樣就不會執行href中的javascript語句了。

$( "#btn" ).click(function(e){
	$.getJSON( url, function( data ){
		alert( data );
	});
	e.preventDefault();
});

 

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()