【问题标题】:Saving user edited Timeline?保存用户编辑的时间线?
【发布时间】:2012-12-11 05:11:55
【问题描述】:

我一直在玩http://almende.github.com/chap-links-library/timeline.html,它允许用户在时间线上添加/编辑/删除事件。关闭或刷新浏览器会将其重置为预加载的数据源 - JSON、表格信息或 Google 电子表格。不会保存用户添加或更改的任何内容。

如何使用户更改持久化?

我之前使用 HTML5 localStorage 来保存文本、复选框和选择框条目等,但使用此时间轴,唯一的条目是:

div id="mytimeline"

有一个与之关联的脚本:

        // Instantiate our timeline object.
        timeline = new links.Timeline(document.getElementById('mytimeline'));

这是对构建时间线容器的 JS 的引用。

有什么想法、例子或建议吗?

谢谢。

更新: 这是我目前所拥有的:

//Check to see if localStorage is supported
var db = getLocalStorage() || alert("Local Storage Not supported in this browser.  Try updating to the latest Firefox, Chrome or Safari browsers.");

function getLocalStorage() {
    try {
        if(window.localStorage ) return window.localStorage;            
}
    catch (e)
{
    return undefined;
}
}  

//Store Timeline Data to localStorage
function storeTimelineData(){
    var data=timeline.getData();
    localStorage.setItem('mytimeline', JSON.stringify(data));
    var storedData=JSON.parse( localStorage.getItem('myTimeline') );

// clear storage
function clearLocal() {
clear: localStorage.clear();
return false;
}

我也进行了这些更改 - body onload="storedData()" 尝试加载 localStorage 保存的值并更改 div id="mytimeline" onmouseup="storeTimelineData()" 以在更改时存储值时间线。

时间轴的更改保存在 localStorage 中,我可以在控制台中看到键/值的这些更改。但是,当我刷新浏览器时,这些并没有被加载到 mytimeline 中。我错过了什么?

谢谢。

【问题讨论】:

  • @laaposto: 为什么timeline.js 标签被删除了?
  • 我添加了更准确且刚刚创建的章节链接库。当您首次发布此问题时,它并没有作为标签出现在 SO 上

标签: javascript html local-storage session-storage chap-links-library


【解决方案1】:

在您发布之前我从未见过插件,但在 API 文档中有各种各样的方法。您需要开始的最重要的一个是getData()

最简单的存储方案是设置定时间隔来获取数据,将其转换为 JSON 并存储。另一种方法是在每次使用与事件交互时更新您存储的数据。

基本的存储更新功能如下:

function storeTimelineData(){
      var data=timeline.getData();
      localStorage.setItem('myTimeline', JSON.stringify(data));
}

然后,当页面加载时,您需要检查 localStorage 中是否有数据,使用以下方法将其转换为 javascript 对象:

var storedData= JSON.parse( localStorage.getItem('myTimeline') );

如果数据存在,则使用该数据初始化插件。

我真的只是给你一个基本的概述。有很多细节你必须从这里整理出来

【讨论】:

  • 谢谢 charlietfl...你让我走上了正确的道路,我想我大部分时间都在那里。我更新了我的问题,到目前为止已经完成了一半。
  • 祝你好运...插件看起来不错,如果文档对用户友好一点,那就太好了,但有很多方法可供使用
  • charlietfl - 为什么存储的值没有被加载回时间线?谢谢。
  • 我将检索数据更改为一个函数,并将函数名称与 body onload= 一起使用(参见上面的编辑)。仍然没有从本地存储加载。 “……初始化插件的数据……”。尝试了 getData 但没有快乐......对此有任何提示吗?谢谢。
  • getTimelineData() 不返回任何内容,并且var getData 具有函数功能,因此由于关闭而在其他任何地方都没有作用域
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 2014-02-14
  • 2011-05-04
  • 2018-08-07
  • 1970-01-01
  • 2017-11-05
相关资源
最近更新 更多