【问题标题】:Check localstorage to decide which screen to load [jquery/javascript]检查 localstorage 以决定加载哪个屏幕 [jquery/javascript]
【发布时间】:2014-04-04 01:16:41
【问题描述】:

我需要用这个

jQuery( ".selector" ).on( "pagebeforechange", function( event ) { ... } )

检查我的本地存储键/值以决定加载哪个屏幕。我已阅读此文档,但我是 Javascript 新手,不了解如何正确执行此文档。

文档没有显示任何示例代码。

我也尝试了一些在 Stackoverflow 上找到的方法,但它们根本不起作用。

请显示一些示例代码。谢谢。

莱斯

代码更新:

//Check localStorage
$(document).bind('pagebeforechange', function (event, ui) {
        if(localStorage.logon == "yes")
            $.mobile.changePage("#userMainPage");
        else
            $.mobile.changePage("#welcome");
});

使用@Omar 建议的this post 作为参考的代码

//Check localStorage
$(document).on("pagebeforechange", function(e, data) {
        if (localStorage.logon == "yes") {
            $.mobile.changePage("#userMainPage", {
                transition: "flow"
            });
            e.preventDefault();
        }
    });

这两个代码都没有将我带到应有的页面。

【问题讨论】:

  • 使用 localStorage.index ="value" 或 localStorage.setItem['index'] = "value" 设置您的值并获取使用 var value = localStorage.getItem("index");警报(值);
  • 嗨@Omar,正如我所说,我确实尝试了在这里找到的其他解决方案,并且我已经更新了使用您推荐的帖子的新代码。我不知道出了什么问题,我刚刚开始学习 Javascript/jQuery。请指教,谢谢。
  • 因为本地存储比较慢,请查看stackoverflow.com/questions/21139572/…这个问题我已经做了解决方法。

标签: javascript jquery jquery-mobile


【解决方案1】:

你可以这样使用它:

$(document).bind('pagebeforechange', function (event, ui) {
    if(localStorage.keyName == "XXX")
            $.mobile.changePage("#pageXXX");
        else
            $.mobile.changePage("#pageYYY");
});

Open 1 page id keyValue 是您想要的。否则打开另一个页面。

【讨论】:

  • 我没有得到这个,可能我需要阅读更多关于 pagebeforechange 事件以及为什么使用此 preventDeafault 的信息。无论如何谢谢!
  • 我使用 preventDefault 只是为了摆脱多个警报。欢迎。 :) @RohitTiwari
  • 嗨@MysticMagic,我将以下代码放入custom.js,但是当我尝试启动应用程序时,页面没有改变。我已经检查了本地存储键/值确实存在。请检查我的代码更新。
  • @user3053891 我建议在按钮单击事件而不是 pagebeforechage 中检查本地存储和页面导航。
【解决方案2】:

我找到了一种解决方法来实现我所需要的。我参考此处回答的建议更正了我的代码,当我使用 console.log 进行测试时,事件运行良好。

但我不能使用该方法,因为该事件会在每次页面加载时触发。我只需要第一个屏幕来检查本地存储。所以我现在的解决方法如下。

我正在单个 HTML 文件中创建多页应用程序,因此我创建了一个新的“检查器”页面作为第一页。

我的检查页面:

<!--    page 0 [checker] on top of among all page-->
<div data-role="page" id="checker">
</div>

那么在 JS 上我有这个:

//Check localStorage and redirect user to matching screen
$('#checker').on("pagebeforeshow", function() {
    if (localStorage.token == null) {
        $.mobile.changePage("#welcome");
    }
    else {
        var active_page = localStorage.active_page;
        $.mobile.changePage(active_page);
    }
});

为什么我创建一个“检查器”页面是因为我不希望在重定向之前显示初始的“欢迎”页面。现在我用“checker”来遮住闪光,因为“checker”是空的。

我确实希望有人可以提出更好的方法,用更简洁、更智能和更少的代码来完成我需要的工作。

我真的希望有人能推荐一个更好的事件处理程序,我可以消除“检查器”页面加载闪烁。谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2014-10-04
    • 1970-01-01
    • 2022-01-21
    • 2021-07-20
    • 1970-01-01
    相关资源
    最近更新 更多