操作系统和JavaScript/HTML5能够访问本地存储吗?

6

我希望在浏览器关闭后使用操作系统读取浏览器的“localstorage”!

我想把客户端数据保存在localstorage中,然后关闭浏览器和互联网,让一个操作系统程序(Windows .exe)访问和分析该数据,然后将新数据写入该localstorage区域,以便当浏览器重新启动时,新数据在localstorage中。

这应该是可行的,因为我的操作系统(例如Windows)可以读取并删除浏览器“文件”中的cookie……所以一旦我知道了localstorage“文件”的格式,那么操作系统就能够控制所有文件,因此它应该能够更改它们!

所以:我如何使用“客户端.exe程序”读取和写入JavaScript / HTML5 / DOM的“localstorage”?

如果无法实现:是否有其他方式让操作系统向浏览器传递简单数据(并从中传出)?

显然,所有这些都具有巨大的潜在能力和巨大的潜在危险!

如果真正的操作系统可以安全地与它交互,浏览器只能成为“未来的虚拟操作系统”!!

谢谢。


显然,所有这些都具有巨大的潜在力量和巨大的潜在危险!- 是吗? - Mark Amery
这完全取决于浏览器。不同的浏览器将以不同的方式实现本地存储。 - Lightness Races in Orbit
1
感谢评论 - 我真的希望JavaScript和HTML-DOM成为未来的“程序运行平台”,但是JavaScript需要大量加强才能达到这个目标 - 我希望本地存储可以在浏览器(任何操作系统上)和操作系统文件之间建立一个“安全-安全-广泛-快速”的堆,确实是“真正的内存”。 - Clive Williams
显然的危险是滥用“管道”攻击操作系统 - 然而,由于“沙盒文件和真实内存区域”的控制可以由操作系统编写者和Javascript-DOM规范制定者设置 - 一切都可能很好!? (这是希望,显然,Javascript可能变得部分可编译以提高浏览器端数值计算速度 - 所以我们可以实际上抛弃所有旧的操作系统(Windows,Ix的GUI的DOS等) - 因此,浏览器将成为未来唯一和单一使用的“计算机人类界面”!.....所以显然我们还没有到那里 - 但是我们可以做到!!! - Clive Williams
2个回答

7
当然,拥有适当权限的本地应用程序可以访问磁盘上的任何文件。但是,真正的问题是打开文件后要做什么?
考虑以下几点:
- 每个浏览器(Chrome、Firefox、IE、Opera)都可能以自己专有的格式存储localstorage数据。您必须进行反向工程来了解这些格式。 - 由于这些格式是实现细节(而不是文档化的API),它们可能会发生更改。这将使您的应用程序崩溃和/或损坏用户数据。 - 如果在浏览器打开的情况下修改这些数据文件(即使相关页面未打开),会发生什么?浏览器不希望在其底层数据文件发生变化,因此您可能会看到奇怪的行为。
所有这些都意味着这是一个非常糟糕的想法。您正在干扰他人应用程序的内部运作;这是大忌。
您考虑过替代方法吗?当我面临类似问题时,我只是在我的应用程序中实现了一个非常简单的HTTP服务器,它绑定到127.0.0.1上的特定端口。
通过XHR和适当的CORS标头,您的基于浏览器的应用程序可以安全地与桌面应用程序通信。

有趣的是,我刚刚对我儿子说过:“如果你假装客户端计算机是服务器,那么更多的事情就可能发生”-这似乎很奇怪!...但这就是现在的生活,掩盖和让事情工作起来...没有总体稳健的“总体模型”,这是我希望事情变成的方式...啊,好吧-老年痴呆症来了!谢谢...我喜欢HTTP服务器思想的简单性! - Clive Williams

1

以下是其他的方法:

  • 在您的应用程序中嵌入一个Web浏览器控件。Web浏览器控件可以轻松地查看页面,而页面也可以轻松地查看本地存储。Web浏览器控件主要指Internet Explorer。
  • 通过操作可执行文件的名称,您可以将参数从网页传递到已启动的可执行文件(甚至是批处理文件)。 (使用application/bat作为Content-Type邀请操作系统在用户下载时运行您的程序。)
  • 从浏览器启动的ClickOnce程序可以轻松地从网页接收数据。
  • 您可以在程序中使用自动化(AutoItAutoHotKey)来复制/粘贴到您网页上的字段。您可以通过标题查找窗口,因为您可以在网页端控制标题。您甚至可以自动打开浏览器,将其导航到转储本地存储到文本字段的页面,并聚焦于该字段。
  • ActiveX控件(祝你好运)

我不能代表OS X或Linux提供类似的技巧。


谢谢Mihai - 我经常使用AUTOIT - C语言的人嘲笑我! 我仍然喜欢并使用批处理文件 - 因此这似乎是对我的一个好的、强大而不太面向对象的解决方案 - 也就是说,回到最底层! 谢谢。 - Clive Williams
我发现AutoIt是一个非常有用的伴侣。我想提醒C语言开发者,专注于窗口和字段输入是比直接调用系统库更高级的自动化方法,因此它具有吸引力。你正在自动化真实的事物。 - Mihai Danila

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接