Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用网页在桌面上存储数据的选项_Javascript_Html_Local Storage_Jstorage - Fatal编程技术网

Javascript 使用网页在桌面上存储数据的选项

Javascript 使用网页在桌面上存储数据的选项,javascript,html,local-storage,jstorage,Javascript,Html,Local Storage,Jstorage,目标: 总而言之,我正在尝试替换excel电子表格。我正在创建一个应用程序,该应用程序将在IE9中运行,但不会连接到internet或intranet(我知道,我知道。请耐心听我说。如果您感兴趣,请阅读下面的更多内容)。它需要对一组每天变化的数据使用CRUD(创建、读取、更新和删除)方法。即使浏览器关闭,数据集也必须保持不变 问题: 使用javascript和html在访问网页的本地计算机上存储数据有哪些可用选项?我在工作中做这件事,所以没有服务器端。我也不能在计算机上安装任何软件,尽管我可以下

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

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

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

尝试次数:
不幸的是,似乎是这样。我正在尝试使用jStorage,但我也曾尝试过。使用时遇到了一组类似的问题

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

附录:
本地存储和其他形式的HTML5存储不起作用。正式的,非正式的,它是非常多车。看博客帖子,然后回答。无论哪种方式,都可以使用以下简单代码:
HTML:


积压跟踪程序
和javascript(参考上面的“backlog\u localstorage.js”):

$(文档).ready(函数(){
$(“body”).append(“Try It”);
$(“按钮”)。单击(函数(){
setItem(“key1”、“Hello”);
log(localStorage.getItem(“key1”);
});
});

。。。我在
localStorage.setItem(“key1”,“Hello”)行上得到以下错误:“SCRIPT5007:无法获取属性“setItem”的值:对象为null或未定义”

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

或者,如果你可以通过桌面或电话访问互联网,你可以把它放在谷歌硬盘上。这比重新发明轮子要容易得多。

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

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


状态保存演示
命令行参数:
持久化文本
你可以改变我,我不会忘记!
document.title+=“-今天是”+日期();//任务/标题栏演示
h1.innerHTML+=JSON.stringify(App.commandLine);//这里有可选的调用信息(很像一个真正的应用程序)
//特定于应用程序的自定义代码:
FILENAME=“state.txt”;
函数saveMe(){save(FILENAME,mydata.value);}
函数loadMe(){mydata.value=load(FILENAME)| | mydata.value;}
//通用UTIL:
函数加载(文件名){//IE FSO文件加载程序
var文件,
text=“”,
fso=newActiveXObject('Scripting.FileSystemObject');
试一试{
file=fso.OpenTextFile(文件名,1,false);
text=file.readAll();
file.Close();
}捕获(y){}
返回文本;
} 
函数保存(文件名,sData){//IE FSO文件保护程序
var文件,
fso=newActiveXObject('Scripting.FileSystemObject');
file=fso.CreateTextFile(文件名,2,false);
文件写入(sData);
file.Close();
返回文件;
}     

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

@ZigMandel他说本地存储不起作用。HTML5中还有其他脱机数据存储选项。由于您使用的是IE,因此可以使用ActiveX进入excel进行存储。再次。HTML5存储!=localStorage@meagar因此,继续并指向一个在IE9上和本地文件中工作的特定文件。使用.hta文件而不是.html文件,添加标记,然后可以对未安装的本地文件夹CRUD使用FSO(无需更改任何ie设置)。我曾经写过一个SPA作为HTA,它在块中自我修改自己的文件,将当前设置/历史信息作为JSON放在文件中。一个外部json文件将更干净、更易于实现。他已经展示了一个指向S.O.的链接,该链接告诉我们为什么本地存储不起作用。他还说它需要离线工作。@MaKR感谢你的想法,但不幸的是,这并没有解决问题。谢谢你,即使有缺点,这也完全符合要求。非常感谢。真正有趣的是,这为开发开放了整个ActiveX环境。例如,想要excel电子表格而不是文本<代码>var ExcelApp=新的ActiveXObject(“Excel.Application”)参考。
<!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>
$(document).ready(function(){
    $("body").append("<button>Try It</button>");
    $("button").click(function(){
    localStorage.setItem("key1", "Hello");
    console.log(localStorage.getItem("key1"));
    });
});
<!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>