jQuery Mobile页面加载代码仅在第一次执行

时间:2012-08-06 19:58:58

标签: jquery ajax jquery-mobile pageload

在jQuery Mobile中,我试图在加载时在页面上运行脚本。如果未满足某些条件,我会重定向到另一个页面。 例如PageA - >点击链接到PageB - >执行页面加载逻辑 - >重定向到PageC。 我第一次导航到PageB时一切正常。 如果我然后返回到PageA并重复导航到PageB,则不会发生重定向(不执行页面加载逻辑)。 如果我重新加载PageA并再次尝试,则会发生重定向。

看起来像是某种缓存问题?或许我应该使用其他类型的页面加载事件?如何在每次页面被命中时确保页面加载逻辑被执行?

这是代码的简化版本。在jqm和jqm移动脚本之后调用脚本。

$(document).bind('pageload', function (evt,data) {

    // I need the url to see if the page needs the logic executed on it
    var page = $.mobile.path.parseUrl(""+ data.url +"");
    if (page == "PageB"){
        logicRequired = "yes";    
    }
    switch (logicRequired)
    {
    //==========================
    case 'yes':

        // AJAX call to determine if redirect is needed
        $.ajax({
        url: "scripts/file.php",
        async: false,
        cache: false,
        success: function (data){
            if(data.status == 'success') {
              // do some stuff


            } else if(data.status == 'error') {
              //redirect to another page
              window.location.replace('redirectPage.html');
            }
        },
        error: function(data){
            //alert("There was an error in the ajax call");
        },
      });
      break;
      }
});

1 个答案:

答案 0 :(得分:2)

每次外部伪页面进入DOM时,

pageload仅触发一次。因此,如果您导航回该页面,事件将不会再次触发。但是,您可以使用在第一次访问伪页面时触发的pagebeforeshow事件以及随后访问伪页面。

您也可以使用data-cache="false"属性标记特定的伪页面,以便jQuery Mobile在用户导航离开伪页面后删除伪页面。