mobile.changePage()在函数中不起作用

时间:2014-12-26 12:35:18

标签: javascript jquery html cordova jquery-mobile

我制作了一个简单的代码来创建一个"启动画面"。

我使用localstorage作为我的数据。如果我是第一次加载它,我会从URL获取数据,然后我可以使用$.mobile.changePage()更改页面。但是,如果已存储localstorage数据,则更改网页代码无效。

function HOME() {
    if (window.localStorage.getItem('newhome')) {
        $.mobile.changePage("#pageone", {
            transition: "none",
            changeHash: false
        });
    } else {
        $.get('http:/someurl', function (data) { //comment this line if we make apk
            window.localStorage.setItem('newhome', JSON.stringify(data));
        }).done(function (data) {
            $.mobile.changePage("#pageone", {
                transition: "none",
                changeHash: false
            });
        });
    }
}
<body>
  <div id="splash" data-role="page"><h1>splash here</h1></div>
  <div id="pageone" data-role="page"><p>my content here</p></div>
</body>

如果我运行不同的功能,例如console.log,他们有效,但不是$.mobile.changePage

2 个答案:

答案 0 :(得分:0)

您的网页未更改的原因是因为它永远不会进入if循环。 else执行yes,但方法.getItem() 返回 Boolean 类型。要检查您的密钥是否实际设置,您应该检查null。所以你的代码看起来会更像这样:

if (localStorage.getItem("username") === null) {
$.get('http://www.thejewishinsights.com/wp/wp-json/posts', function (data) { //comment this line if we make apk
        window.localStorage.setItem('newhome', JSON.stringify(data));
    }).done(function (data) {
        $.mobile.changePage("#pageone", {
            transition: "none",
            changeHash: false
        });
    });
}
else{
$.mobile.changePage("#pageone", {
        transition: "none",
        changeHash: false
    });
}

我没有检查代码,但你应该明白这个想法。另外我会反对.changePage,因为它将从jQuery mobile 1.5中删除,如文档中所述http://api.jquerymobile.com/jQuery.mobile.changePage/

我希望这会有所帮助。 干杯和新年快乐!

答案 1 :(得分:0)

您是否尝试过使用此功能:?

$(":mobile-pagecontainer").pagecontainer("change","#newpage");

我认为JQMobile官方网站建议使用此而不是您使用的那个。