0

使用 jQuery 和我的 WebViewController 在 iPhone 上遇到最奇怪的问题。

我有一个 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。

在这一点上,我似乎无法再使用 jQuery 向该 div 附加任何内容。我可以删除就好了,但附加不再有效。

完全相同的代码在 iPhone 之外的 Firefox 和 Safari 上运行良好,但在嵌入的 WebKit 中运行失败。

如果我直接使用 JavaScript 修改 DOM,它可以工作,但如果我使用 jQuery,它会失败:

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

“第一件事”出现,但“第二件事”没有。

有任何想法吗?这件事快把我逼疯了。

4

1 回答 1

1

终于找到了解决办法:

我正在使用 window.location 调用我的目标 c 函数。事实证明,如果我在对 window.location 的调用周围添加了一个 setTimeout ,一切都会重新开始工作。我猜调用 window.location 会立即调用 Objective-C 代码,中断 javascript 线程,让事情处于糟糕的状态。通过添加 setTimeout,它允许 javascript 线程在跳转到 Objective-C 代码之前完成。或类似的东西。

于 2009-03-06T19:45:09.530 回答