0

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

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

我试过了:

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

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

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

4

1 回答 1

0

您需要了解 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 的信息附加到 DOM 中,或者使用data()api),例如:

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

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

 $('html').jqmData("some","thing");
于 2013-04-11T10:17:14.493 回答