【问题标题】:How to call a function on ready on jquery mobile- phonegap?如何在 jquery mobilephonegap 上调用准备就绪的函数?
【发布时间】:2015-11-18 06:18:30
【问题描述】:

我有一个索引页面 (index.html),用户可以从它转到登录页面 (login.html)

所以要转到 login.html,我这样做:

$.mobile.pageContainer.pagecontainer("change", "login.html",
{transition: "none", changeHash: false, reload: true});

但是在 login.html 上,我想在页面加载时调用一些函数。所以我尝试了以下但它们没有工作(未触发)

$( document ).on( "pageinit", "#loginPage", function( event ) {  
alert( "This page was just enhanced by jQuery Mobile!" ); });

或者这个:

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

【问题讨论】:

    标签: jquery html cordova jquery-mobile


    【解决方案1】:

    开发cordova最重要的一点是监听cordova deviceready事件:

    document.addEventListener("deviceready", startApp, false);
    
    function startApp(){
       // begin your app logic here
    }
    

    另一个提示:不要使用多个 html 文件创建多站点布局。它会减慢您的应用程序,并且更难以开发。

    【讨论】:

    • 还要确保在本地加载资产(Javascript、CSS 等),而不是从 Internet 加载。
    • 你会惊讶于我听到的次数。 “我为什么要那样做?” FWIW,我更喜欢 *一些* 应用程序的几个 html 文件,因为它更容易。但在很多情况下,我认为你是对的。
    • 但我可以使用不同的 html 文件。但是,所有的 java 脚本文件都应该加载到头索引文件中。
    【解决方案2】:
    $( '#loginPage' ).on( 'pagebeforeshow',function(event){
     alert( "This page was just enhanced by jQuery Mobile!" ); });
    }
    

    【讨论】:

      【解决方案3】:

      所以我想出了如何解决它。 我在 index.html 上加载了所有 .js 文件

      我在 index.js 上放了下面一行

      $('#loginPage').live('pagebeforeshow',function(e,data){    
             init(); // this is defined on login.js
      
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-15
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-09
        相关资源
        最近更新 更多