0

我的应用程序结构是这样的:

index.html / 应用程序。入口点包括在<head>...</head>一个中央 JS 中,我根据打开的页面和触发的事件来执行自定义脚本:这是一个名为 mylist.html 的页面的快速示例,而不是在每个页面上都有脚本,我有一个更大的 JS,只需要一次加载<head>索引:

$(document).on('pageinit', '#pageMyList', function()        
{
     // init code   
});

$(document).on('pageshow', '#pageMyList', function()
{   
    // run every time
});     

关闭 JQM ajax 和其他东西不是一种选择,因为我需要这些转换并使用 jqm“native”。

问题:

我有一个由浏览器处理的 pdf、doc、外部链接等的列表。例如:打开 pdf 我只是链接到它 (window.location = 'pathToPdfFile';

那行得通,但随后打开了pdf阅读器(iphone等)。现在返回将打开最后一页,但 index.html 页面不再位于 DOM 中 - 而且我的整个 JS 都不可用。

顺便说一句:页面是通过 ajax 动态构建的。当我刷新任何页面(index.html)时,同样的情况会丢失

4

1 回答 1

0

您可以明确告诉 JQM 哪些页面要加载到 DOM 中(请参阅页面底部的 JQM 文档),但要小心,因为如果您将太多页面加载到 DOM 中,您将遇到特定于设备的内存问题。

要缓存特定页面,您可以将 data-dom-cache="true" 属性添加到页面的容器(例如您的index.html页面):

<div data-role="page" data-dom-cache="true">

要将所有以前访问过的页面保留在 DOM 中,请将页面插件上的 domCache 选项设置为 true,在名为 AFTER jQuery 但在加载 jQuery mobile 之前的单独 JS 文件中,如下所示:

$.mobile.page.prototype.options.domCache = true;

或者,您可以创建一个 HTML5 缓存清单文件,该文件将存储您在缓存中指定的所有文件,从而该应用程序甚至可以在离线时运行。这种方法有缺点,但这取决于您希望您的应用程序如何运行。这是关于 HTML5 缓存清单和操作方法的文档:http: //www.html5rocks.com/en/tutorials/appcache/beginner/

于 2012-07-25T14:44:03.973 回答