我正在使用jQuery Mobile 1.2,我正在尝试编写一些代码来处理所有页面初始化。
例如,假设我需要在每个页面中执行某些操作之前首先检查用户是否已登录到应用程序。如果用户未登录,则我应该重定向到另一个页面,例如登录。
示例,下面的代码应在每页初始化之前执行:
$(document).live('pagebeforecreate', function(event) {
if (ifUserIsNOTLoggedIn()) {
$.mobile.changePage("login.html");
event.preventDefault();
}});
页A:
$('#a').live('pageinit', function () {
// Do things });
页面B:
$('#b').live('pageinit', function () {
// Do things });
PageBeForeCreate代码应在PageInit之前运行(默认情况下正确触发),但也应取消页面过渡到A或B,并且不应触发PageInit。
您能帮助我如何从" PageBeforeCreate"部分取消PageInit事件?
只是我的两美分,但是如果可能的话,页面重定向应该在服务器端进行,例如:如果您提出页面请求,则服务器代码将验证是否或不是您经过身份验证。如果是,它将返回您要要求的页面,否则它将返回登录页面。
如果出于任何原因,您必须做所有客户端,则应检查用户是否在更改页面之前登录。如果pagebeforecreate
被触发,则会创建页面,为时已晚(可能)为时已晚(可能)。
来自JQM文档:
请注意,通过绑定到PageBeforeCreate,您可以操纵标记 在JQuery Mobile的默认小部件进行自动限制之前。为了 例如,说您要通过JavaScript添加数据属性而不是 在HTML源中,这是您要使用的事件。
对我来说,这与pageBeforeCreate的事件处理程序一样,仅用于修改即将显示的页面。看来,完成您正在做的事情的更好事件是pagebeforechange
事件:
此事件在任何页面加载或过渡之前触发。 回调可以防止执行ChangePage()函数 将事件对象上的预防默认为调回回调。 (...)应该注意的是,回调可以修改上衣和 选项属性以更改当前变更的行为()的行为 称呼。因此,例如,可以将其映射到与不同的URL 在回调中进行一种重定向。