我尝试这样做:
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是不可能的?或者我做错了什么?
答案 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')) )
没有转义的换行符,它无法正常工作
答案 2 :(得分:0)
当您从Cookies中获取值时,您需要转义将存储在Cookie中的HTML字符串,并将其转换为相同的内容。
将以下行放在您设置Cookie的位置。
escape(html)