deviceready 处理程序未被调用 ios phonegap 3.3.3

Posted

技术标签:

【中文标题】deviceready 处理程序未被调用 ios phonegap 3.3.3【英文标题】:deviceready handler not being called 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 【参考方案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

以上是关于deviceready 处理程序未被调用 ios phonegap 3.3.3的主要内容,如果未能解决你的问题,请参考以下文章

touchesBegan 在 iOS 12 中被调用,但在 iOS 13 中未被调用

boost::asio::async_accept 处理程序未被调用

Cordova iOS deviceready 永远不会触发

ATTN PhoneGap/Cordova 项目贡献者:以 2 种不同方式调用 deviceready 回调的问题

基于 1.6.1 的 phonegap 构建应用程序中未触发 deviceready 事件

在 Adob​​e Phonegap Build 中,Deviceready 未触发