jQuery Mobile应用程序的起点

时间:2014-05-20 12:15:59

标签: javascript jquery-mobile

很抱歉,如果这是一个“nooby”问题,但jQuery移动应用程序的起点在哪里?类似于在Android中启动Activity时调用的onCreate()方法。例如,我有一个条件我想在其他任何事情发生之前检查(假设我想显示或隐藏主屏幕中的按钮,如果条件是是真是假。

if (localStorage.registered) {
     //show button A
} else {
     //show button B
}

我将逻辑放在哪里以确保它是第一件完成的事情?

1 个答案:

答案 0 :(得分:2)

在jQuery Mobile初始化期间触发的第一个第一点是mobileinit事件:

$( document ).on( "mobileinit", function() {
    // We want popups to cover the page behind them with a dark background
    $.mobile.popup.prototype.options.overlayTheme = "b";
    // Set a namespace for jQuery Mobile data attributes
    $.mobile.ns = "jqm-";
});

此事件在jQuery Mobile完成加载后触发,但在开始增强起始页面之前触发。因此,此事件的处理程序有机会在影响库的行为之前修改jQuery Mobile的全局配置选项和所有窗口小部件的默认选项值。

基本上你需要做的就是立即做到这一点。

之前没有意义,因为jQuery Mobile甚至没有初始化。

最后一件事,必须在jQuery Mobile启动之前初始化此事件,就像这样(或者它想要工作):

<script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<script>
    $( document ).on( "mobileinit", function() {
        // We want popups to cover the page behind them with a dark background
        $.mobile.popup.prototype.options.overlayTheme = "b";
        // Set a namespace for jQuery Mobile data attributes
        $.mobile.ns = "jqm-";
    });
</script>
<script src="//code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>

如果您要创建一个Phonegap应用,并且您还想要包含Phonegap(Cordopva),那么请执行以下操作:

var deviceReadyDeferred = $.Deferred();
var jqmReadyDeferred = $.Deferred();

document.addEventListener("deviceReady", deviceReady, false);

function deviceReady() {
  deviceReadyDeferred.resolve();
}

$(document).one("mobileinit", function () {
  jqmReadyDeferred.resolve();
});

$.when(deviceReadyDeferred, jqmReadyDeferred).then(doWhenBothFrameworksLoaded);

function doWhenBothFrameworksLoaded() {

}