【问题标题】:Session storage on Symbian^3 with jQuery Mobile and PhoneGap BuildSymbian^3 上的会话存储与 jQuery Mobile 和 PhoneGap Build
【发布时间】:2013-04-11 09:28:28
【问题描述】:

我正在使用 jQuery Mobile、HTML5 和 PhoneGap Build 创建一个跨平台应用程序的项目。我们的目标平台包括 Symbian^3。

我需要能够跟踪一些会话数据,例如用户 ID 以及他们是否已登录。Symbian 对此感到很痛苦,因为我尝试过的解决方案似乎都不起作用。

我试过了:

  • HTML5 sessionStorage 和 localStorage。这两种情况都会导致 Symbian 上的应用在调用时立即冻结。
  • 饼干。这些总是返回未定义,即使您在设置它们后立即访问它们。
  • 全局变量。我创建了一个 .js,其中定义了一些 var 以供在整个应用程序中使用。该脚本包含在每个可能需要它的 HTML 文件的头部。不幸的是,这不起作用,因为当您在页面之间切换时会重新定义变量,从而丢失会话数据。

我已经达到了通过网络搜索和实验所能完成的极限,所以我在这里提出我的第一个问题。我很乐意上传一些代码示例,但实际上并没有太多可展示的内容。

至于实际问题:如何在 Symbian 上的 jQuery Mobile 应用程序中创建会话上下文,使其在页面转换中保持不变?

【问题讨论】:

    标签: html jquery-mobile session-variables symbian phonegap-build


    【解决方案1】:

    您需要了解 JQM 的工作原理。当您从页面 A 开始并转到页面 B 时,您并没有真正离开页面 A。而是 JQM AJAX 请求页面 B,剥离 <div data-role="page"></div> 之外的所有内容并将其附加到 DOM。

    这意味着您的 DOM 将始终保持“活跃”,无论您在应用程序中的哪个位置(除非您在链接上设置 data-ajax="false")。

    因此,您的选项 3 - 全局变量 - 应该可以工作,因为 a.js 文件只会在页面 A 上加载(并在页面 B、C、D... 上被删除)。如果变量被覆盖,那是因为您可能正在覆盖它们 - 您需要显示 a.js 中的内容。

    另一种选择是将应该保留的信息直接附加到 DOM,或者使用 data()(api),例如:

     $('html').data("foo": bar)
    

    或者如果信息不多,只需使用数据属性

     $('html').jqmData("some","thing");
    

    【讨论】:

    • 感谢您的帮助。建议的方法适用于其他平台,但 Symbian 仍然存在问题。这可能是因为平台上没有正确支持 AJAX 导航。我们决定为 Symbian 做原生开发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2013-03-19
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多