如何将javascript html dom文档存储到本地存储

时间:2014-08-27 16:31:54

标签: javascript html5

我有文件(组件树)'m',我试图存储在html5的本地存储中。我尝试将其设置为本地存储。但当我将其取回时,此m已更改为[object Document]。 如何将文档存储到本地存储并将其作为文档本身检索?

以下是我试过的代码

Before storing to local storage

After retrieving it back from the local storage

应用程序向服务器发送ajax请求以退出日历的事件,并在请求的onsuccess中收到xhtml的dom表示。 当用户进入下周视图时,应用程序必须从本地存储中撤消该事件。要从js文件向客户端发送响应,dom表示也是必要的。因此我们需要将dom表示存储到localstorage。

我的要求是在第一张图片的控制台中,你可以看到从文件m中检索到'k'并作为响应发送到客户端。所以,我想要的是将这个k或m存储到本地存储所以我可以在同一个js文件中操作它。这个代码在一个单独的js文件中,用于xhtml文件。

我正在使用primefaces 4.0,jsf 2.1。

当我使用

localStorage.setItem( “calendarevents”,JSON.stringify(K));

我收到错误'将循环结构转换为json'。

2 个答案:

答案 0 :(得分:5)

您需要通过执行以下操作来存储document's html的字符串表示形式:

localStorage.setItem('calendar', document.documentElement.innerHTML);

执行此操作时:

localStorage.setItem('calendar', document.documentElement);

...它将document.documentElement.toString()的结果存储在localStorage中,这对您的目的不起作用。

答案 1 :(得分:1)

localStorage将每个值转换为字符串。要存储对象,必须使用变通方法。

我猜你可以使用in this answer

描述的方法
var testObject = { 'one': 1, 'two': 2, 'three': 3 };

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

console.log('retrievedObject: ', JSON.parse(retrievedObject));