iPhone Webkit Странность jQuery: не удается обновить контент - PullRequest
0 голосов
/ 26 февраля 2009

Сталкиваюсь с самой странной проблемой на iPhone, используя jQuery с моим WebViewController.

У меня есть div, к которому я добавляю контент:

<div id="thumbnails">
  Here are your thumbnails:
  <div id="mythumbs"></div>
</div>

Код выглядит так:

for (var i = 0; i < thumbs.length; i++) {
  var item = thumbs[i];
  $('<img class="imgthumb" />').data('url', item.Url).attr({
    "src": item.Thumbnail.Url,
  }).appendTo($('#mythumbs'));
};

Отлично работает.

Затем я переключаюсь на другие div-ы ($('#thumbnails').hide(); $('#someotherdiv').show()), продолжаю заниматься своими делами и в конце концов переключаюсь обратно на div-миниатюры.

На данный момент я больше не могу добавлять контент в этот div с помощью jQuery. Я могу удалить просто отлично, но приложение больше не работает.

Точно такой же код прекрасно работает на Firefox и Safari за пределами iPhone, но однажды во встроенном WebKit он не работает.

Если я изменяю DOM напрямую, используя JavaScript, он работает, но если я использую jQuery, это не получается:

var x = document.createTextNode('THE FIRST THING');
document.getElementById('thumbspage').appendChild(x);
$('#thumbspage').append('-- THE SECOND THING');

Появляется «ПЕРВАЯ ВЕЩЬ», а «ВТОРОЙ ВЕЩИ» нет.

Есть идеи? Эта штука сводит меня с ума.

1 Ответ

1 голос
/ 06 марта 2009

Наконец-то нашел обходной путь:

Я вызывал свою функцию target-c, используя window.location. Оказалось, если я добавил setTimeout вокруг вызова window.location, все снова заработало. Я предполагаю, что вызов window.location немедленно вызовет код Objective-C, прерывая поток JavaScript, оставляя вещи в плохом состоянии. Добавляя setTimeout, он позволяет завершить поток JavaScript, прежде чем переходить к коду Objective-C. Или что-то типа того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...