在浏览器端,打开本地 html 文件,执行 JavaScript 修改本地文件内容的方式,有什么方式么?

2020-06-14 10:19:10 +08:00
 tctc4869

浏览器为了用户安全考虑,不让 JavaScript 修改本地文件内容,

但是我只想在本地用浏览器打开本地的一个 html 文件,在打开后的 html 界面点击按钮,执行某个功能,该功能是用 js 代码修改本地文件内容,这个有没有方法?必须要 node.js 么?

比如我想载浏览器端打开 html 文件,点击按钮修改一个相对于打开的 html 文件中同目录下的.json 文件内容。有什么好方法么。必须要用 ie 或 node.js ?谷歌,火狐不行么?需要什么配置么?或者 js 有什么数据库么?能在浏览器端打开一个本地 html 文件,执行 js 代码就能增删改查?

我想制作一些基于浏览器端打开本地 html 文件,就能执行的脚本应用,需要用本地持久化功能,所以想要用 JavaScript 。不考虑跨平台。windows 就行。

5702 次点击
所在节点    JavaScript
39 条回复
imn1
2020-06-14 14:03:13 +08:00
不是本地但近似本地的方法有一个:
本机 webdav
azh7138m
2020-06-14 14:35:54 +08:00
可以
https://web.dev/native-file-system/

native File System 已经整了很久了,楼上为啥没人提到?
soulmt
2020-06-14 15:50:10 +08:00
上 chrome 83
jinliming2
2020-06-14 17:24:50 +08:00
对,22 楼提到的 native File System 就是用来读写本地文件的,但是目前只是体验功能,需要手动开启。
开启后页面申请单个文件或是整个目录的访问权限,就可以直接读写了。
DoodleSit
2020-06-14 17:55:33 +08:00
windows 上,html 改后缀 hta (猜想的),或者使用 ActiveObjectX
xiangyuecn
2020-06-14 19:05:11 +08:00
搞个文件系统的 http 接口,建 3 个文件:
1. 你的.html:自己写一个纯前端界面,双击就能活蹦乱跳那种
2. http-filesystem.js:自己写一个 nodejs 文件,封装本地文件系统功能提供 http 访问接口,目录(+元数据)、读取、写入、删除 4 个实现就够了
3. 运行.bat:打开上面两个文件:浏览器打开 html 、nodejs 服务运行

从此想怎么搞就怎么搞。


楼上那几个方法都不错,用 electron 、chrome 试验特性这些。不过自己扩展一下古董 IE 也是不错的,提供文件读写 js 接口。我前段时间就写的一个 exe,调用 WebBorwser ( IE11 ),让 js 读写文件、连接 mysql,不过文件目录功能没有搞,现在手动提供文件路径,好玩

app 本身不大 200kb,但是是专门用来处理 gis 数据的,gdal 库几十 M: https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/AreaCity-Geo-Transform-Tools.html#xz

beastk
2020-06-15 08:05:19 +08:00
ie 本地可以
myCupOfTea
2020-06-15 08:55:43 +08:00
如果你能接受每次读取,更新必须弹出一个文件管理器窗口让客户点击,那就或许可以
alore
2020-06-15 09:03:49 +08:00
把 html 后缀改成 hta 试试。或者搜索下 hta 。只能使用 IE,并且对版本可能有要求。
asdjgfr
2020-06-15 09:07:58 +08:00
用 node 打包一个后台服务,直接双击启动就行了
ruanimal
2020-06-15 09:47:17 +08:00
firfox 开发者版本是可以的
g00001
2020-06-15 14:11:06 +08:00
windows 上用 aardio 做这事很方便,生成的 EXE 非常小,接口也很简单,javascript 里可以调用本地函数,可以支持系统自带的 Chromium 内核浏览器,也可以支持系统自带的 IE 控件。
tctc4869
2020-06-15 14:26:27 +08:00
@ruanimal 使用了火狐开发者模式的话,那么 js 读取文件用哪个 js 库呢?直接读 sqlite 可不可以?
ruanimal
2020-06-15 16:49:30 +08:00
@tctc4869 不太熟,不是前段开发
ruanimal
2020-06-15 16:50:29 +08:00
@tctc4869 可以试试直接用 localstorage
Chanix34
2020-06-22 11:39:47 +08:00
我想说,我是看到这个问题才注册的 V2EX……

我有着你类似的需求,因此写了个小众的东西,axeBrowser.com ,应该可以满足你的需求。

很遗憾满足这种需求的软件肯定是小众的,而且存在严重的安全问题。一个可以装载脚本,然后突破沙盒对本地资源进行处理的浏览器,在杀毒软件看来和木马没什么区别。
tctc4869
2020-06-23 13:21:05 +08:00
@Chanix34 我个人使用,又不给别人
Chanix34
2020-06-23 21:40:15 +08:00
@tctc4869 那么 axeBrowser.com 应该可以满足你的需求,你可以试一试。我目前正在继续完善和扩展 js 可以调用的功能模块。
lleon
2021-12-12 05:34:52 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/681395

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX