Я создаю мобильное веб-приложение, и, хотя я все еще нахожусь в процессе создания прототипа, мне трудно исправить некоторые проблемы с производительностью.
Само приложение (работаетвсе гладко в настольных браузерах, но значительно вяло в Mobile Safari): прототип веб-приложения Hancards .Вы можете войти как mifeng
: wangwang
или создать нового пользователя.
Общая неуклюжая производительность может быть допустимой, за исключением одного: браузер просто падает (!) При открытии заданной страницынажмите «просмотреть» (увеличить все карточки), а затем попытаться вернуться на предыдущую страницу.
Код, который выполняется при нажатии «просмотра», выглядит следующим образом (сам по себе очень вялый, есть ли способ улучшить его?):
if ($(this).hasClass('big')) {
$('.card').unwrap().removeClass('big flippable').addClass('small');
$(this).removeClass('big');
}
else {
$('.card').wrap('<div class="bigCardWrap" />').removeClass('small').addClass('big flippable');
$(this).addClass('big');
}
И еще одна вещь, довольно странная ошибка.Очень часто блок «слово дня» не отображает текстовый узел для последнего элемента (<div class="meaning">
), даже если он находится в коде.Текст не будет отображаться, если вы все равно не «встряхнете» DOM (снятие галочки и отметка галочкой одного из связанных свойств CSS также может этого добиться).Это происходит как в настольных, так и в мобильных браузерах Safari.
Код, который его записывает, выглядит следующим образом:
// While we are here, also display the Word of the day
$.post('ajax.php', {action: 'stuff:showWotd'}, function(data) {
// Decode the received data
var msg = decodeResponse(data);
// Insert the values
$('.wotd .hanzi').text(msg.content[0]['hanzi']);
$('.wotd .pinyin').text(msg.content[0]['pinyin']);
$('.wotd .meaning').text(msg.content[0]['meaning']);
});
Я не ожидаю васчтобы дать мне совет о том, как исправить производительность всего приложения (вероятно, мне придется пересматривать общий объем проекта, а не пытаться найти обходные пути), но я по крайней мере хотел бы посмотреть, как решить эти две проблемы.Спасибо!