在iPhone 3G上运行iOS 3.0的Phonegap应用程序忽略了更新DOM的调用
我正在使用phonegap/jquery/jqtouch开发iPhone应用程序。当使用运行iOS 3.0.1的iPhone 3G测试应用程序时,对DOM进行更改(例如'append()')的jquery调用不能一致地工作。在iPhone 3G上运行iOS 3.0的Phonegap应用程序忽略了更新DOM的调用
在呼叫'append'之前,我有一个警报呼叫,并在'append'呼叫之后有另一个警报呼叫。两个警报一致工作,但“追加”呼叫随机工作。有时DOM会被更新,有时不会。这些调用也不会导致错误。就好像他们被忽略了一样。
在iOS 4.0.2的iPhone 4上,该应用程序完美无瑕。
该应用程序需要适用于iOS 3.0及以上版本,因此我不愿意将3G手机升级到iOS 4.0,因为我无法将其恢复到iOS 3.0.1。
我已经尝试了3.2和4.0的基础SDK。 'iPhone OS部署目标'设置为'iPhone OS 3.0'。
有没有人有任何想法可能会发生什么?有关如何进行调试的任何提示?
谢谢!
导致此问题的代码:
var sample = $('<div></div>').text('sample');
navigator.notification.alert("test 1", "Test", "Dismiss");
$('#test').append(sample);
navigator.notification.alert("test 2", "Test", "Dismiss");
两个警报“测试1”和“测试2”出现,但文本“样本”只是有时会出现。
我找到了下面的线程来描述这个问题。 http://groups.google.com/group/phonegap/browse_thread/thread/81460667fd771735
基于线程的,我要请尝试以下建议,并将张贴在这里无论是它的工作: $(“mySelector”)问题是由手机的缓慢和访问DOM引起.get(0).innerHTML ='我的html代码';
有一个在innerHTML的在移动Safari/UIWebView中(至少3.2及以下)的一个错误: http://blog.johnmckerrell.com/2007/03/07/problems-with-safari-and-innerhtml/
我使用的解决方法从该博客。
我们通过覆盖PhoneGap.run_command函数解决了这个问题。
PhoneGap.run_command = function() {
if (!PhoneGap.available || !PhoneGap.queue.ready)
return;
PhoneGap.queue.ready = false;
var args = PhoneGap.queue.commands.shift();
if (PhoneGap.queue.commands.length == 0) {
clearInterval(PhoneGap.queue.timer);
PhoneGap.queue.timer = null;
}
var uri = [];
var dict = null;
for (var i = 1; i < args.length; i++) {
var arg = args[i];
if (arg == undefined || arg == null)
arg = '';
if (typeof(arg) == 'object')
dict = arg;
else
uri.push(encodeURIComponent(arg));
}
var url = "gap://" + args[0] + "/" + uri.join("/");
if (dict != null) {
url += "?" + encodeURIComponent(JSON.stringify(dict));
}
// Replaced document.location=url with these three lines to prevent the PhoneGap+innerHTML bug
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", url);
var body = document.getElementsByTagName("BODY")[0];
body.appendChild(iframe);
body.removeChild(iframe);
};
显示一些代码在这里会有所帮助,尤其是对你所说的“append”的调用并不一致。 – 2010-09-05 00:03:53