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
?
答案 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