我很感激任何帮助解决这个问题 - 或者至少在哪里寻求解决它。
我所拥有的是调用iPhone navigator.compass.getCurrentHeading(succ,fail),每次设备移动时都会调用成功函数。在XCode调试日志中,我看到为每个移动生成了很多 navigator.compass.setHeading 调用的条目。如果我再次尝试轮询标题数据 - 请求就会挂起。这是代码:
function onBodyLoad() {
if (typeof navigator.device == "undefined") {
document.addEventListener("deviceready", onDeviceReady, false);
} else {
onDeviceReady();
}
}
function succ(heading) {
alert("compass " + heading);
}
function fail() {
alert('fail');
}
function onDeviceReady() {
navigator.compass.getCurrentHeading(succ, fail);
}
这是非常奇怪的行为,因为我希望getCurrentHeading只被调用一次并返回一个结果,而不是无法阻挡的一连串事件。
我使用的是PhoneGap 1.0.0。 Android上的相同代码完美无缺。我删除了所有自定义JS代码以防止发生冲突。
答案 0 :(得分:1)
奇怪的是,没有其他人似乎遇到这个。无论如何,这个(hacky)解决方案可以帮助那些寻找答案的人。
由于此问题,我们不得不停止使用getCurrentHeading,而是将其替换为navigator.compass.watchHeading。在清除手表时,我们还调用navigator.compass.stop()函数以防止进一步指南针垃圾邮件(仅适用于iPhone平台 - Android很好),在再次调用watchHeading之前,我们调用navigator.compass.stop()和navigator.compass .start(),重新初始化指南针“以防万一”(再次,仅限iPhone)。
采取这些措施后,用户罗盘的页面不再挂在第二个条目上,并且此页面之外没有标题垃圾邮件。