我正在以这种方式设置document元素的innerHTML属性:
document.getElementById('some_element').innerHTML = newHTML;
这适用于桌面和iPhone模拟器上的Web浏览器。但在iPhone设备上,这种方法效果很好。我的意思是,有时工作,有时不工作。谷歌小组提出的一个解决方案是尝试重复此函数调用大约20次,间隔50毫秒。来吧。这个神秘的延迟有一些合理的解释吗?
以下是google群组中此问题的链接:
http://groups.google.com/group/phonegap/browse_thread/thread/0d24a9fda0921407#
答案 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];
希望有所帮助。