У меня есть страница, которая использует jQuery для загрузки файла XML, который я затем выводю на страницу.
Недавно я добавил к выходу функцию сортировки, которая вызывает зависание на Safari на iPod Touch на 1+ или 2+ (в зависимости от того, сколько полей я сортирую) и зависание на iPad на 1 минуту. В Firefox 4.0.1 такая же сортировка возвращается через несколько секунд.
Боюсь, это всего лишь ограничение iOS, но, прежде чем я удалил сортировку, возможно, есть какая-то оптимизация, которую можно сделать.
Перед фильтром в XML содержится 357 элементов. После фильтра отсортировано 199 товаров.
var videoGames = $($.parseXML(videoGameXml)).find("game");
videoGames = videoGames.filter(function (a) {
return ($(this).attr('addOn') != "true" && $(this).find('own').text() == "yes");
});
videoGames.sort(function (a, b) {
var firstTitle = $(a).find('title').text().toLowerCase();
var secondTitle = $(b).find('title').text().toLowerCase();
var firstSystem = ($(a).find("console").text() + " " + $(a).find("version").text()).toLowerCase();
var secondSystem = ($(b).find("console").text() + " " + $(b).find("version").text()).toLowerCase();
if (firstSystem != secondSystem) {
if (firstSystem > secondSystem) {
return 1;
} else {
return -1;
}
} else {
if (firstTitle > secondTitle) {
return 1;
} else if (secondTitle < firstTitle) {
return -1;
}
}
return 0;
});
videoGames.each(function () {
// runs quickly, so removed
});
Обратите внимание, что если я уберу проверку системы как первоначальную «оптимизацию», которая сокращает время на iPod Touch примерно вдвое, но все равно приводит к зависанию на 1+ минуты, упомянутому выше.
Итак, это ограничение устройства iOS или я могу оптимизировать свой вид?