在特定条件下更改页面(在当前页面显示之前)

时间:2012-10-11 13:20:04

标签: javascript jquery jquery-mobile

我想阻止用户访问我的jqm页面的子页面。为此,我使用pagebeforecreate事件来检查某个条件,并根据它,更改显示的页面(取消当前页面加载和重定向或正常加载当前的起始/主页面)。问题是,即使我调用changePage()方法,我仍然会在执行preventDefault()之前看到页面闪烁。我还使用相对网址作为to的第一个参数(changePage(to, options) ='page.php'),因为我的#subpage1位于page.php内,所以它应该打开 - 它做了 - 然后转换被打破,因为没有真正的刷新。

请注意,我的page.php包含不同的#subpage(例如#subpage1#subpage2)。

jQuery(document).on('pagebeforecreate', '#subpage2', function(event, data) {
    if (!isCondition1() && !isCondition2()) {
        // stop loading #subpage2
        event.preventDefault();
        jQuery.mobile.changePage(jQuery('#subpage1'), {
            data: 'lang=de&param1=foo&param2=bar',
            reloadPage: true,
            type: 'get'
        });
    }
    // go on loading #subpage2
});

jQuery(document).one('pageinit', '#subpage2', function() {
    // do something
});

1 个答案:

答案 0 :(得分:0)

您是否尝试过在html中设置正文样式:none?然后,如果页面正确加载,您可以设置它的显示属性?这应该是一个“解决方法”,以防止页面的闪烁?