jQueryでXMLを読むときhtml()を使うとsafariでエラー
■ 環境
jquery-1.10.1
Safari-5.1.7
初めはiPhoneでエラーになるのかと思ったが,調べていくとOSは関係なくsafariのみで起きる事象みたい。chromeではエラーは起きないでsafariだけエラーが起きるなんて珍しいなーと思ったのでメモ。
例えば以下のようなXMLが用意してあって,/getxml.phpにアクセスするとXMLが取得できるとする。
ABC0001 ABC0002 ABC0003 
次にJSで以下の様にしてproductCodeを順番にコンソールに出力する。
$.ajax({
	url: '/getxml.php',
	dataType: 'xml',
	success: function(xml_data){
		$(xml_data).find('productDetail').each(function(i){
			console.log($('productCode', this).html());
		});
	}
});
以上の書き方だとsafariだけエラーが出る。エラーメッセージはこんな感じ。
TypeError: 'undefined' is not an object (evaluating 'n.innerHTML.replace')
どうも$(‘productCode’, this).html()が良くないみたい。
いつもあまり気にせずhtml()を使っていたがtext()に変えてみたらsafariでもうまく動いた。
$.ajax({
	url: '/getxml.php',
	dataType: 'xml',
	success: function(xml_data){
		$(xml_data).find('productDetail').each(function(i){
			console.log($('productCode', this).text());
		});
	}
});
今後はtext()も頭に入れておこう。。。


 
