似たような質問を見たことがありますが、私のケースに役立つ回答はないようです...
基本的に、$.ajax()
(別のドメインにある) 使用中に HTML をロードし、独自の DOM に解析して、実際のウィンドウ DOM で属性を適用し、HTML を操作できるようにしたいと考えています。
$.ajax({
type: 'GET',
url: 'http://example.com/index.html',
dataType: 'html',
crossDomain: true,
cache: false,
success: function(data)
{
var src = $('body img', data).first().attr("src");
//also tried: var src = $('body', $(data)).first().attr("src");
$('#someDiv img').attr("src", src);
}
});
HTML ファイルの例は次のとおりです。
<html>
<body>
<img src="someurl"></img>
</body>
</html>
Firefox では機能しますが、IE では機能しません。何を試しても、解析して読み取ろうとすると、null が返されます。助言がありますか?
編集:
私の質問にはあいまいさがあったようです。問題はAJAXではなく解析です。AJAX は html 文字列を正しく返しますが、jQuery はそれを解析できません。
編集2:
「解決策」を見つけましたが、思ったほど良くはありません.DOMに適用するのではなく、HTML文字列を切り刻んで並べ替え、データを抽出します. データの順序を予測できるため、効率的に実行されているようです。
煮詰めると、次のようになります。
var imgsrcs = new Array(5);
var searchItem = '<img src="';
for (var a=0; a<5; a++) {
var startLoc = data.search(searchItem) + searchItem.length;
for (var i=0; i<data.length; i++) {
if (data.charAt(startLoc + i) == '"')
break;
imgsrcs[a] += data.charAt(startLoc + i);
}
data = data.substring(startLoc + i, data.length);
}
$('.image').each(function(i) {
$(this).attr("src", imgsrcs[i]);
});
かなり醜いですが、問題を解決したので、投稿したほうがよいと思いました。