使用 jquery 在 cookie 中存储和检索 div

发布于 2024-12-10 07:29:59 字数 1166 浏览 0 评论 0原文

好的, 所以我使用 jquery 创建一个 cookie 并在其中存储一个 div。 这个 div 有很多格式、其他 div、文本等。

var rentContainer = document.createElement('div');
rentContainer.setAttribute("class","module");
var carContainer = document.createElement('div');
carContainer.setAttribute("class","carRentContainer");
rentContainer.appendChild(carContainer);
.... and a lot of other things go in this rentContainer div

现在将其保存在 cookie 中,

$.cookie('rented_car', rentContainer);

到目前为止一切看起来都很好。

当刷新页面并加载正文时,现在是时候获取此 div 并将其显示在页面上(具有相同的格式、结构等)。

所以在我的函数中我有

var rented_car_cookie = $.cookie("rented_car");
if(rented_car_cookie){
    document.getElementById('rentit').appendChild(rented_car_cookie);
    //rentit is already defined and exists on the page. All I need is to add the cookie div content on it.

,但这给了我一条错误消息

已达到 Firebug 的日志限制。 0 个条目未显示。偏好设置
未捕获的异常:[异常...“无法转换 JavaScript 参数 arg 0 [nsIDOMHTMLDivElement.appendChild]” nsresult:“0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)”位置:“JS 框架 :: iGo.js :: checkCookies :: 第 10 行”数据:没有]

请帮忙。最好的方法是什么?

Ok,
So I am creating a cookie using jquery and storing a div in it.
This div has a lot of formatting,other divs,text ,etc in it.

var rentContainer = document.createElement('div');
rentContainer.setAttribute("class","module");
var carContainer = document.createElement('div');
carContainer.setAttribute("class","carRentContainer");
rentContainer.appendChild(carContainer);
.... and a lot of other things go in this rentContainer div

Now save it in cookie

$.cookie('rented_car', rentContainer);

everythings looks ok upto now.

when the page is refreshed and the body is loaded, it is now time to get this div and show it on page ( with same formatting,structure, etc).

so in my function I have

var rented_car_cookie = $.cookie("rented_car");
if(rented_car_cookie){
    document.getElementById('rentit').appendChild(rented_car_cookie);
    //rentit is already defined and exists on the page. All I need is to add the cookie div content on it.

but this gives me an error message

Firebug's log limit has been reached. 0 entries not shown. Preferences
uncaught exception: [Exception... "Could not convert JavaScript argument arg 0 [nsIDOMHTMLDivElement.appendChild]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: iGo.js :: checkCookies :: line 10" data: no]

Please help. What is the best way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一袭水袖舞倾城 2024-12-17 07:29:59

无论如何,将完整的 html 元素存储在 cookie 中是一件坏事。也许使用 JSON 更好。

不管怎样,你可以尝试将 div 保存为 cookie 中的 html 字符串。

// set
$.cookie("rented_car", $(rentContainer).html())

// get
var content = $.cookie("rented_car");
var $rentContainer = $('<div class="module">' + content + '</div>');

代码: http://jsfiddle.net/yecf8/

但是你需要知道,有很多不同的不同浏览器关于 cookie 的限制。例如:

Microsoft Internet Explorer 符合以下 RFC 2109 建议的最低限制:

  • 至少 300 个 cookie
  • 每个 cookie 至少 4096 字节(根据 Set-Cookie 标头的语法描述中构成 cookie 非终结符的字符大小来衡量)
  • 每个唯一主机或域名至少有 20 个 Cookie

Anyway, storing full html element in cookie it bad thing. Maybe it's better use JSON.

Anyway you can try to save div as html string in the cookie.

// set
$.cookie("rented_car", $(rentContainer).html())

// get
var content = $.cookie("rented_car");
var $rentContainer = $('<div class="module">' + content + '</div>');

Code: http://jsfiddle.net/yecf8/

But you need to know that there are a lot of different limitations for different browsers regarding cookies. For example:

Microsoft Internet Explorer complies with the following RFC 2109 recommended minimum limitations:

  • at least 300 cookies
  • at least 4096 bytes per cookie (as measured by the size of the characters that comprise the cookie non-terminal in the syntax description of the Set-Cookie header)
  • at least 20 cookies per unique host or domain name
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文