nw.js怎么打开文件选择对话框,并保存文件?
新手,学习nw.js开发一款markdown编辑器,想要实现点击save按钮就弹出文件选择对话框,如下:
然后把md_editor里文字保存成md文件。我写的代码如下(在index.html里有<input type="file" id="fileDialog" nwsaveas />):
<script>
var fs=require("fs");
var text = $("#md_editor").val();
$("#save").click(function(){
var input = $("#fileDialog");
input.trigger("click");
var dirr = input.val();
fs.writeFile(dirr,text,function(err){
if(err) throw err;
alert("File Saved!!");
});
});
</script>
这段代码运行不成功,原因在于当input.trigger()执行但是用户还没有选择好文件保存地址时,后面代码已经运行,这时dirr的值是空值,所以fs.writeFile运行失败。
在我的另一个问题中,@公子 建议
$("#fileDialog").on("change", function() {
var dirr = input.val();
fs.writeFile(dirr,text,function(err){
if(err) throw err;
alert("File Saved!!");
});
});
也有一些问题,比如如果保存两次,且保存位置、文件名一样,那么就不会触发change事件,也就不会保存新文档了。
后来我就又想能不能用while循环来阻塞input,如下第八行:
<script>
var fs=require("fs");
var text = $("#md_editor").val();
$("#save").click(function(){
var input = $("#fileDialog");
input.trigger("click");
var dirr = input.val();
while(dirr=""){dirr=input.val();}
fs.writeFile(dirr,text,function(err){
if(err) throw err;
alert("File Saved!!");
});
});
</script>
但是这样nw整个都会卡死,并占用系统大量的cpu和内存。不知道问题出在哪里。
请对nw文件模块比较熟悉的各位教教我怎么做,谢谢!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
表示不能理解你为什么会遇到这个问题?
编辑器保存文件时的逻辑,一般是这样的:
1、检查是不是新的文件;
第一步的结果,就是肯定会返回一个 文件路径;
2、读取编辑器当前的内容,覆盖到指定路径的那个文件;
难道你每次保存都要选择一次文件路径?
好好看看文档,我觉得你前面的做法都是不务正业,正确的是响应filedialog的save事件