0

JavaScript と jQuery でフォト スライダーを作成しています。Chrome では完全に動作しますが、ほとんどのクライアントが表示することがわかっている IE6 では動作しません。

私はこの機能を持っています:

function getFacebookPhotos(photoCount, pageId) {
    var picsUrl = "http://api.facebook.com/method/fql.query?query=SELECT%20src_big,%20src_big_height,%20src_big_width%20FROM%20photo%20WHERE%20pid%20IN%20(SELECT%20pid%20FROM%20photo_tag%20WHERE%20subject='243117879034102')%20OR%20pid%20IN%20(SELECT%20pid%20FROM%20photo%20WHERE%20aid%20IN%20(SELECT%20aid%20FROM%20album%20WHERE%20owner='" + pageId + "'%20AND%20type!='profile'))";

    var responseText = $.ajax({
        url: picsUrl,
        async: false,
        dataType: "xml",
        success: function(text) {
            responseText = text;
        }
    }).responseText;
    var xmlDoc = $.parseXML(responseText);
    var $xml = $(xmlDoc);
    var $photos = $xml.find("photo");
    var resultantPhotos = [];
    for (var i = 0; i < photoCount; i++) 
    {
        var $element = $($photos[i]);
        var $src_big = $element.find("src_big");
        var $text = $src_big.text();
        resultantPhotos.push($text);
    }
    return resultantPhotos;
}

Facebook クエリから XML 応答を取得して解析し、Facebook ページから写真の URL の配列を返します。Chrome ではこれは機能しますが、Internet Explorer 6 では、返される写真配列は null です。どちらのブラウザでも、コードはエラーなしで実行されます。

この JavaScript を使用して XML を解析していました。

if (window.XMLHttpRequest) { 
    xmlHttp = new XMLHttpRequest();
}
else {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("GET", picsUrl, false); // Throws permission error in IE
xmlHttp.send(null);
var photos;
if (window.DOMParser) 
{
    var parser = new DOMParser();
    xml = parser.parseFromString(responseText, "text/xml");
} 
else  // Internet Explorer
{
    xml = new ActiveXObject("Microsoft.XMLDOM");
    xml.async = false;
    xml.loadXML(responseText);
}
photos = xml.getElementsByTagName("photo");

しかし、Chromeで作業している間にIEでエラーが発生したため、jQueryに切り替えました。何が悪いのか知っていますか?

4

1 に答える 1