将html传递给cookie

时间:2016-02-11 11:33:36

标签: javascript html

我尝试这样做:

html = document.getElementById('a').innerHTML;

setCookie("test", html, 365); 

如果我的id = a且它有这个内容:

<span>a</span>
<span>b</span>

我尝试将整个html内容添加到cookie中,这样我就可以阅读cookie并获得相同的HTML。

http://jsfiddle.net/aox53dbn/4/

但它不起作用。也许存储html是不可能的?或者我做错了什么?

3 个答案:

答案 0 :(得分:2)

Cookie值不能包含HTML包含的空格。

您的setCookie函数(您未能将其包含在您的问题中,但在链接到的第三方托管页面上可见)并不以任何方式转义数据,因此如果您设置了无效的Cookie值然后它无声地失败。

根据the MDN documentation修改您的setCookie函数,以便在将Cookie值附加到字符串之前通过encodeURIComponent运行Cookie值。

(当您阅读Cookie时,您需要使用decodeURIComponent()撤消它。)

答案 1 :(得分:1)

您可以存储字符串化值

function setCookie(cname, cvalue, exdays) 
{
console.log(cvalue)
var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

function getCookie(cname) 
{
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) 
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
    }
}

html = document.getElementById('a').innerHTML;

setCookie("test", JSON.stringify(html), 365); 

console.log(JSON.parse(getCookie('test')) )

没有转义的换行符,它无法正常工作

工作小提琴http://jsfiddle.net/aox53dbn/6/

答案 2 :(得分:0)

当您从Cookies中获取值时,您需要转义将存储在Cookie中的HTML字符串,并将其转换为相同的内容。

将以下行放在您设置Cookie的位置。

escape(html)