我一直在尝试使用localstorage来存储Jquery-min,但我无法做到。我已经尝试了一些Jquery插件,但它们也不起作用。
为我的Web应用程序加载Jquery一次似乎是个好主意,再也不用担心了。我正在创建的应用程序有每天访问的人。我不认为他们需要多次下载JS文件或CSS文件。
我能够将所有CSS存储在localstorage中,但不能存储Jquery或Jquery UI。
无论如何,我知道人们会试着让我使用缓存清单......等等。但我正在寻找一种方法将Jquery库存储在localstorage中。 (这是目标)。
有什么想法吗?
修改 每个人都在问一个代码示例。所以这里......它非常直接,我只使用少量的Jquery缩小版本以保持帖子小:
localStorage.setItem("name", "(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f('<'+a+'>').appendTo('body'),d=b.css('display');b.remove();if(d==='none'||d===''){ck||(ck=c.createElement('iframe'),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write('<!doctype><html><body></body>");
查看时保存的内容:
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f('<'+a+'>').appendTo('body'),d=b.css('display');b.remove();if(d==='none'||d===''){ck||(ck=c.createElement('iframe'),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write('
它不能保存所有内容。我可以使用parsefloat()或其他东西吗?如果能起作用我该怎么做?
我喜欢本地存储的原因是我可以轻松控制它。而且我不必担心用户清空缓存。如果我需要更新localstorage,我可以用一行代码来完成。它几乎充当我的Web应用程序的更新功能。如果我遗漏了某些内容或者有更简单的方法,请告诉我。示例代码即将推出
答案 0 :(得分:3)
如果在将脚本文件保存到localstorage之前对其进行Base64编码,它可以正常工作。在下面的示例中,我省略了jQuery文件,但在演示中,整个jQuery 1.7已经编码。
我使用以下网站将整个文件编码为一个字符串(大多数将其分成块):http://textmechanic.co/ASCII-Hex-Unicode-Base64-Converter.html?type=text
演示:http://jsfiddle.net/ThinkingStiff/ZMAKn
HTML:
<div></div>
脚本:
var jquery = '<Base64 encoded file>';
var result = 'jQuery: ' + ( typeof $ != 'undefined' ) + '<br />';
window.localStorage.setItem( 'jquery', jquery );
jquery = '';
jquery = window.localStorage.getItem( 'jquery' );
eval( atob( jquery ) );
result += 'jQuery: ' + ( typeof $ != 'undefined' ) + '<br />';
$( 'div' ).html( result ); //this works, so jQuery loaded
window.localStorage.removeItem( 'jquery' );
输出:
jQuery: false
jQuery: true
答案 1 :(得分:3)
对于HTML5本地存储来说,这是一个很棒的练习,但是你的网络服务器不应该只响应HTTP 304(未修改)?自1998年以来几乎所有的Web服务器都支持此功能。让你的服务器用简单的304响应要比编写大量的javascript来加载jQuery进出本地存储要快得多。
如果由于某种原因你无法让你的网络服务器工作,请使用public jQuery CDNs之一,他们会为你做这件事。
答案 2 :(得分:0)
我同意Cyan Lite。您需要为此使用浏览器缓存,而不是浪费时间对其进行编码。
如果您不想像Cyan建议的那样使用CDN,您可以在服务器上轻松启用缓存:https://developers.google.com/speed/docs/best-practices/caching#LeverageBrowserCaching