0

在 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;
      }
});
4

1 回答 1

2

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

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

于 2012-08-06T20:09:33.960 回答