iOS - deviceready在5秒后没有发射

时间:2014-02-11 05:19:38

标签: ios cordova

deviceready不再在第二页上被解雇了。 假设我有:

page1.html - 参赛页面。

page2.html - 另一页。

在第1页中,我有这段代码:

document.addEventListener("deviceready", onDeviceReadyPopup, false);

function onDeviceReadyPopup(){
    window.location.href="page2.html";
}

在第2页中,我有这段代码:

document.addEventListener("deviceready", onDeviceReady, true);      

function onDeviceReady() {
     alert("Script - Device ready!");
} 

问题:警报从未被触发,因为它不会触发deviceready事件。这将在android中正常工作。

我怀疑是因为我使用window.location.href

3 个答案:

答案 0 :(得分:2)

deviceready 事件每个应用程序生命周期仅触发一次。

此事件对任何应用程序都至关重要。它表明Cordova的设备API已经加载并准备好访问。

Cordova由两个代码库组成:native和JavaScript。加载本机代码时,会显示自定义加载图像。

但是,只有在DOM加载后才会加载JavaScript。这意味着在相应的本机代码可用之前,Web应用程序可能会调用Cordova JavaScript函数。

一旦Cordova完全加载,就会触发deviceready事件。

了解更多:http://cordova.apache.org/docs/en/3.5.0/cordova_events_events.md.html#deviceready

答案 1 :(得分:1)

它是否甚至达到你的ondevicereadypopup()函数?也许尝试在那里插入警报,以确保您的程序在ios中达到它。而且,当我想在我的ios程序中更改页面时,我通常会这样处理它:

$.mobile.changePage("#idofpage");

我唯一害怕的是你可能正在使用多个html文件,这可以使这更难一点,phonegap可以很容易地在一个html文件中使用你的所有页面,然后唯一地ID每个页面。例如:

<div data-role="page" id="page1">
    <!--content of page-->
</div>

当你制作这样的页面时,使用它们的ID导航到它们非常容易,你也可以在它们之间使用一些很好的快速转换。

答案 2 :(得分:0)

您是否已将设备api包含在内,因为所有核心功能现在都在插件中。

截至3.x,因为我不知道它。 将以下内容添加到config.xml为我工作

<gap:plugin name="org.apache.cordova.device" />

我在本页底部找到了这些信息 Phonegap Build Upgrading from 2.9 to 3.1