1

目标:
总而言之,我正在尝试替换 Excel 电子表格。我正在创建一个将在 IE9 中运行但不连接到 Internet 或 Intranet 的应用程序(我知道,我知道。请耐心等待。如果您好奇,请阅读下面的更多信息)。它需要对每天变化的一组数据使用 CRUD(创建、读取、更新和删除)方法。即使关闭浏览器,数据集也必须保持不变。

问题:
有哪些选项可以使用 javascript 和 html 将数据存储在访问网页的本地计算机上?我在工作中这样做,所以不会有服务器端。虽然我可以下载 javascript 插件,但我也无法在计算机上安装任何软件。该网页将使用 Win 7 和 IE9 从计算机上的文件加载。

背景:
这值得解释。我使用 Excel 电子表格来跟踪一组每天都在变化的数据。我正在学习 HTML 和 javascript,我可以创建一个更好(且更易于使用)的解决方案作为网页。我可以创建 UI / UX,但我很难弄清楚如何将数据存储在本地计算机上。有什么好的建议吗?

尝试:
不幸的是,似乎localStorage 不是一个选项。我正在尝试使用 jStorage,但我也在那里遇到了问题使用simpleStorage时遇到了一组类似的问题。

感谢您考虑,如果需要更多信息,或者我需要澄清一些事情,请告诉我。

附录:
Localstorage 和其他形式的 HTML5 存储不起作用。官方确实如此,但非官方却非常有问题。请参阅此处的博客文章,并在此处回答。无论哪种方式,使用以下简单代码:
HTML:

<!DOCTYPE html>
<html>
    <head>
    <title>Backlog Tracker</title>
    <script src="jquery-2.1.1.min.js"></script>
    <script src="backlog_localstorage.js"></script>
    </head>
    <body>
    </body>
</html>

和 javascript(参考上面的“backlog_localstorage.js”):

$(document).ready(function(){
    $("body").append("<button>Try It</button>");
    $("button").click(function(){
    localStorage.setItem("key1", "Hello");
    console.log(localStorage.getItem("key1"));
    });
});

...我收到以下错误:“SCRIPT5007:无法获取属性'setItem'的值:对象为空或未定义”在线localStorage.setItem("key1", "Hello");

4

2 回答 2

1

HTA(实际上只是一个带有一个额外标签和不同文件扩展名的 html 文件)是 Windows 用户的一种可能的解决方案:

重要提示:另存为 demo.hta 以在 Windows 上作为应用程序运行

<!DOCTYPE html> 
<html> <!--   some parts lifted from  
  http://msdn.microsoft.com/en-us/library/ms536496(v=vs.85).aspx 
  http://msdn.microsoft.com/en-us/library/ms536473(v=vs.85).aspx
-->
<head>

  <title>State Saving Demo</title>

  <hta:application id="App" 
    application="yes"
    applicationname="demo" 
    icon="calc.exe"
    border="thin"
    caption="yes"
    sysmenu="yes"
    showintaskbar="yes"
    singleinstance="yes"
    sysmenu="no"
    maximizeButton="yes"
    minimizeButton="yes"
    navigable="no"
    scroll="yes"
    contextmenu="no"
    selection="no"  
    windowstate="normal" >  

     <!-- Use Internet Explorer 10 Standards mode (to use JSON, CSS3, etc...) -->
  <meta http-equiv="x-ua-compatible" content="IE=10">

</head>
<body onload=loadMe() >

<h1 id=h1>Command-line args: </h1>

<h3>Persisted Text</h3>
<textarea rows=20 cols=100 id=mydata onchange=saveMe() >
You can change me and i won't forget!
</textarea>

<script>
document.title+=" - Today is " + Date(); // task/title bar demo
h1.innerHTML+= JSON.stringify( App.commandLine ); // optional invocation info here (much like a real app)

// app-specific custom code:
FILENAME="state.txt";
function saveMe(){save(FILENAME, mydata.value); }
function loadMe(){mydata.value=load(FILENAME) || mydata.value;}

// generic utils: 
function load(filename) {   //IE FSO file Loader
          var file,
              text="", 
              fso= new ActiveXObject('Scripting.FileSystemObject');
          try{
            file = fso.OpenTextFile(filename, 1, false);
            text = file.readAll();
            file.Close();
          }catch(y){}
    return text;
} 

function save(filename, sData){   //IE FSO file Saver
          var file,
          fso = new ActiveXObject('Scripting.FileSystemObject');
          file = fso.CreateTextFile(filename, 2, false);
          file.write(sData);
          file.Close();
    return file;    
}     

</script>
</body>
</html>

我最近重新发现了 HTA,它们还不错。我认为我不想分发和维护它们,但 HTA 是一种使用 HTML、CSS 和 JS 制作简单桌面应用程序的简单方法。更改后不必构建任何东西来“重新编译”应用程序,这很好。与 node-webkit、打包应用程序、air、cordova 等相比,节省了一些步骤,但 HTA 有一个主要缺点:它们仅适用于 windows afaik...

于 2014-06-14T00:08:33.663 回答
-2

在我看来,您可以使用 LocalStorage,最大的问题是您要如何存储它?您可以轻松地将对象/数组存储到 LocalStorage 中,并且该对象/数组可以是您的数据,然后 JS 可以将其输出到表中。如果您正在寻找存储实际文件,那么您正在寻找更像 ActiveX 插件的东西。

http://caniuse.com/#search=localstorage

或者,如果您可以通过台式机或手机访问互联网,则可以将其放在 Google Drive 上。这比重新发明轮子要容易得多。

于 2014-06-13T18:56:06.590 回答