Я столкнулся с интересной проблемой, которая, боюсь, может быть ошибкой в Safari или чего-то, чего я просто не вижу.
У меня есть статический XML-файл с несколькими элементами «игры». Внутри каждого из них, среди прочего, есть элемент title.
Я извлекаю файл XML с помощью метода jQuery ajax, передавая dataType текста, а затем сохраняю результат в localStorage.
Если я затем извлекаю эти данные из localStorage и анализирую их с помощью jQuery, я могу успешно проанализировать все элементы в XML в IE 9, Chrome 10, Opera 11, Firefox 4. Однако в Safari 5 и Safari для iPod Touch актуально и iPad (оба в текущей версии), все элементы выводятся с исключением текста элемента заголовка (в XML).
Редактировать : то же самое происходит, если я изменяю элемент с «заголовок» на «заголовок», а также «имя». Если я изменю его на что-то вроде «xName», то информация будет отлично отображаться, поэтому мой код выглядит нормально.
Соответствующий вызов jQuery:
$(document).ready(function () {
$.ajax({
url: "/xml/video_games.xml",
dataType: 'text', // We'll grab it as text, so we can save it into localStorage
success: function (data) {
videoGameXml = data;
localStorage['VideoGameXml'] = videoGameXml;
addDataToPage(videoGameXml);
}
});
});
addDataToPage:
function addDataToPage(data) {
$('#MainData').hide();
var htmlOutput = "<ol>";
try {
$(videoGameXml).find("game").each(function () {
if ($(this).attr('addOn') != "true" && $(this).find('own').text() == "yes") {
// Displays console and version elements, but not the title.
htmlOutput += "<li><strong>" + $(this).find('title').text() + "</strong> for the " + $(this).find("console").text() + " " + $(this).find("version").text() + "</li>";
}
});
} catch (e) {
JamesRSkemp.dumpObject(e);
}
htmlOutput += "</ol>";
$('#MainData').html(htmlOutput);
$('#MainData').show();
}
Если я вернусь назад и пропущу шаг localStorage, заголовки отображаются правильно. Тем не менее, это не очень помогает, поскольку цель страницы - быть доступной офлайн , и я бы предпочел использовать то, что поддерживается всеми современными браузерами.
Я также извлекаю из статического XML-файла, поэтому изменение данных на JSON должно быть выполнено на странице, или мне придется настроить службу для анализа XML и возврата JSON. Я не против того или другого, если мне нужно, но ... я бы лучше изменил имя элемента.
Я также не против сохранения выходного HTML в localStorage вместо XML-данных, но я бы предпочел, чтобы в XML было доступно все, а не только то, что я выбрал для вывода в данный момент (для дополнительных функций по дороге).
Вы можете увидеть рабочую версию этого в http://media.jamesrskemp.com/xmlHtml/video_gamesSO.html