【问题标题】:deviceready handler not being called ios phonegap 3.3.3deviceready 处理程序未被调用 ios phonegap 3.3.3
【发布时间】:2014-01-03 19:20:43
【问题描述】:

index.html

<script>
   function onDeviceReady() {
       alert("onDeviceReady");
       var options = {frequency: 500};
       watchId = navigator.accelerometer.watchAcceleration(onSuccess, onFailure, options);
    }
    document.addEventListener("deviceready", onDeviceReady, false);
</script>

Phonegap 3.3.3 设备就绪处理程序未被调用。

【问题讨论】:

  • 我觉得不错。当您说 Phonegap 3.3.3 时,您是指 Cordova 3.3.0 还是使用边缘版本。我假设你是在设备/模拟器上尝试这个,而不是通过网络浏览器。设备就绪,不会在浏览器中触发。
  • 哎呀,3.3.3 打错了,我用的是 Cordova 3.3.0

标签: javascript ios cordova


【解决方案1】:

确保您已在 html 中包含 phonegap.js(或 cordova.js)脚本。否则你的代码很好。如果问题仍然存在,请尝试评论除 onDeviceReady() 中的警报之外的所有内容。

如果仍有问题,请尝试发布带有问题的 index.html。

【讨论】:

  • 添加 &lt;script type="text/javascript" charset="utf-8" src="cordova.js"&gt;&lt;/script&gt; 为我解决了这个问题。谢谢。我的印象是自动注入的,显然不是。
【解决方案2】:

最好在文档加载完成后在函数中设置事件监听器。试试这样的:

<body onload="onLoad()">

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

或使用 jquery:

$(document).ready(function() {
    document.addEventListener("deviceready", onDeviceReady, false);
});

【讨论】:

    【解决方案3】:

    从脚本中删除 app.initialize()(这会弄乱事件处理程序)

    【讨论】:

    • 什么意思?您的代码中没有 app.initialize
    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多