Похоже, проблема в том, что Safari не поддерживает document.implementation.createDocument как метод для извлечения и загрузки источников XML. Вы должны использовать XMLHttpRequest для получения и анализа XML AFAIK.
Я попробовал модифицированную версию кода из учебника Apple, который вы связали, и, похоже, он мне подходит. Этот код не лучший в мире, и ему не хватает обработки ошибок, но это единственное подтверждение концепции, которую я имел под рукой.
Примечание: я настоятельно рекомендую использовать библиотеку. Существуют несоответствия браузера с XMLHttpRequests и анализом XML. Это стоит инвестиций!
Для не библиотечной версии я использовал модифицированную версию кода сафари, чтобы получить XMLHttpRequest:
function getXHR(url,callback) {
var req = false;
// branch for native XMLHttpRequest object
if(window.XMLHttpRequest && !(window.ActiveXObject)) {
try {
req = new XMLHttpRequest();
} catch(e) {
req = false;
}
// branch for IE/Windows ActiveX version
} else if(window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
req = false;
}
}
}
if(req) {
req.onreadystatechange = function() { callback( req ) };
req.open("GET", url, true);
req.send("");
}
}
Получение XML-кода из результата также не лишено его собственных причуд:
function getXML( response ) {
if( response.readyState==4 ) {
//Get the xml document element for IE or firefox
var xml;
if ( response.responseXML ) {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(response.responseText);
} else {
xml = response.responseXML;
}
return xml;
}
return null;
}
Наконец, используйте то, что вы получите:
function callback( response ) {
var xmlDoc = getXML( response );
if( xmlDoc ) {
//do your work here
...
}
}
Если у вас по-прежнему возникают проблемы, вы можете проверить несколько вещей, которые, вероятно, решат вашу проблему.
- Вы установили тип контента на text / xml?
- Ваш запрос действительно поступает на сервер и обратно?
- Когда вы предупреждаете / изучаете текст ответа, вы видите что-то, что не принадлежит?
- Правильно ли отформатирован ваш XML? Запустите его через валидатор.
Удачи! Приветствия.