在iPhone上设置innerHTML

时间:2010-11-19 09:39:10

标签: javascript iphone html prototypejs

我正在以这种方式设置document元素的innerHTML属性:

document.getElementById('some_element').innerHTML = newHTML;

这适用于桌面和iPhone模拟器上的Web浏览器。但在iPhone设备上,这种方法效果很好。我的意思是,有时工作,有时不工作。谷歌小组提出的一个解决方案是尝试重复此函数调用大约20次,间隔50毫秒。来吧。这个神秘的延迟有一些合理的解释吗?

以下是google群组中此问题的链接:

http://groups.google.com/group/phonegap/browse_thread/thread/0d24a9fda0921407#

http://groups.google.com/group/phonegap/browse_thread/thread/a5787985293b6de1/8d826c8506377025?lnk=gst&q=innerHTML#8d826c8506377025

1 个答案:

答案 0 :(得分:2)

是那个名为?的代码时

我想如果在文件是loadead时调用此代码,比如onLoad(),那么DOM可能还没有完全加载。

就个人而言,我只是简单地包含jQuery并执行类似的操作:

<script type="text/javascript" src="jquery-1.4.3.min.js"></script>

<script type="text/javascript">
  $(document).ready( function() {
      $('#some_element').html(newHTML);
  } );
</script>

......或原型:

document.observe('dom:loaded', function(){
    // do yo thang...
});

这确保在脚本触发之前完全加载DOM;从而避免了这种竞争条件。

要包含jQuery,只需从他们的official website下载它并将其放入Xcode项目中。或者,如果您的HTML文档是通过HTTP提供的,则可以将其放在服务器上的HTML文件旁边。

哦,在我忘记它之前。从项目加载我的HTML文件的代码如下所示:

NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"myHtmlFile" 
                                         withExtension:@"html"];

NSURLRequest *request = [NSURLRequest requestWithURL:fileUrl];

[webView loadRequest:request];

希望有所帮助。