JQM多用途应用程序与一个中央JS和打开PDF(doc,..)问题

时间:2012-07-25 12:14:28

标签: jquery jquery-mobile

我的应用程序结构如下:

index.html / app。入口点包含在<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&#34; native&#34;。

问题:

我有一份pdf,doc,外部链接等等的列表,这些都是由浏览器处理的。例如:打开pdf我只是链接到它(window.location =&#39; pathToPdfFile&#39 ;;

这有效,但随后pdf阅读器开启(iphone等..)。现在回去将打开最后一页,但是index.html页面已经不在DOM了 - 而且我的整个JS都不可用。

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

1 个答案:

答案 0 :(得分:0)

您可以专门告诉JQM将哪些页面加载到DOM(页面底部的see JQM docs),但要小心,因为如果您在DOM中加载太多,则会遇到设备特定的内存问题。

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

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

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

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

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