在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;
}
});
答案 0 :(得分:2)
pageload
仅触发一次。因此,如果您导航回该页面,事件将不会再次触发。但是,您可以使用在第一次访问伪页面时触发的pagebeforeshow
事件以及随后访问伪页面。
您也可以使用data-cache="false"
属性标记特定的伪页面,以便jQuery Mobile在用户导航离开伪页面后删除伪页面。