PhoneGap / JQueryMobile页面没有初始化

时间:2013-08-14 18:03:24

标签: jquery cordova

在构建我的应用时,我使用JQueryMobile创建了它。我把一切都搞定了,包括使用

 jquery($document).on('pageinit','#someID',function(){ ...});

过渡效果很好......转移到新页面在所有浏览器中都运行良好。

然后我使用PhoneGap 2.9.0进行设置。我添加了cordova.js的包含。初始化了应用程序并添加了var app =;到我的main.js文件。在var app中调用的函数基本上是一个包含所有pageinit调用的虚函数。我不能让它继续工作并基于window.console.log条目我知道pageinit调用没有发生。

我的问题是绝望,因为我已经为这个主题的客户吹了太多时间。我该怎么办才能让我的网页被解雇?我确信这是问题的症结所在。

这是一个jsfiddle - http://jsfiddle.net/3Nz9t/。它不会呈现任何东西。但它会让你知道我上面描述的内容

4 个答案:

答案 0 :(得分:1)

您应该绑定到DeviceReady而不是pageinit。

答案 1 :(得分:0)

听起来您正试图在普通浏览器中使用PhoneGap运行您的应用。 IIRC,PhoneGap预计不会在普通浏览器中运行。 {1}}事件不会在普通浏览器中触发。要使PhoneGap正常工作,您必须使用Getting Started guides中描述的方法之一构建Android / iOS / ...应用。

但是,如果您想在普通浏览器中测试您的应用,则会phonegap-desktop带来一个垫片deviceready 模拟 PhoneGap API。

答案 2 :(得分:0)

尝试在body onload之后添加deviceready,例如文档示例:http://docs.phonegap.com/en/edge/cordova_events_events.md.html#deviceready

添加了onBodyLoad方法的修改小提琴:http://jsfiddle.net/3Nz9t/2/

请记住添加:

<body onload="onBodyLoad()">

答案 3 :(得分:0)

感谢所有分享和协助我的人。最后,我做了一些研究,并且调试速度慢了一些,并且进入了下面的解决方案。

如果有人碰到这个,想知道我是如何解决的。

保留所有JQueryMobile pageinit调用。让它们像在网站中一样加载。抵制将它们放入app.initialize()函数的冲动。问题来自于,在pageinit中,你有一个功能依赖于一个必须在app.initialize()期间联机的插件。所有PhoneGap插件都需要在该阶段上线。

为了解决这个问题,我在我的main.js文件和我的<script type="text/javascript">app.initialize();</script>之前添加了位于jsFiddle中的代码:http://jsfiddle.net/BtzJJ/

*注意,小提琴不会渲染,只是为了演示我的代码。

需要注意的重要部分是我创建了一个var并将其设置为false。然后在我的pageinit中查看此var。由于var = 0,我的init部分取决于我的插件被跳过。这使我的页面可以使用JQueryMobile正确加载。

现在,在HTML中,我们看到我已经定义了var app和onDeviceReady函数。在我的函数里面,我包含了我的插件js文件。在包含该文件的过程中,我运行一个函数来调用跳过的pageinit中的代码

我希望这有助于节省您的一些时间。