gpt4 book ai didi

javascript - Node-Webkit SaveAs 文件对话框仅触发唯一文件名?

转载 作者:行者123 更新时间:2023-11-30 06:29:59 25 4
gpt4 key购买 nike

在 Node-Webkit 网站 ( https://github.com/rogerwang/node-webkit/wiki/File-dialogs ) 上,它说使用 <Input type="file">打开文件选择器对话框,然后监听 change事件以获取选择或指定的路径和文件名。

当我第一次指定或选择一个文件名时,这工作正常,但如果我再次调出文件选择器并使用相同的文件名,change事件不会被解雇!只有当我在选择器对话框中更改文件名时,更改事件才会触发。下面是一个例子:

<input id="export_file" type="file" nwsaveas style="display:none" nwworkingdir=""/>
<script>

var chooser = jQuery("#export_file");

chooser.change(function(evt)
{
alert(jQuery(this).val());
});

chooser.trigger('click');

</script>

有谁知道在用户从文件选取器中选择文件后始终触发事件的方法(无论文件之前是否被选取或定义过)?

谢谢。

最佳答案

由于您的“处理程序”仅在标记看到更改时被调用,您可以重置它(在处理之后——在本例中为警报调用),以便每次都像第一次一样。但是,如果您“重置”输入标签,则会触发更改事件,因此您需要 (1) 删除更改​​事件监听器,(2) 将输入标签重置为未定义,以及 (3) 恢复更改事件监听器。使用新的 node-webkit 0.7.0 File 和 Filelist 构造函数——这只适用于 v0.7.0——下面的代码应该可以工作。

<script>

var chooser = jQuery("#export_file");

function fileHandler (evt) {

alert(jQuery(this).val());

var f = new File('','');
var files = new FileList();
files.append(f);
chooser.unbind('change');
document.getElementById('export_file').files = files;
chooser.change(fileHandler);
}

chooser.change(fileHandler);
chooser.trigger('click');

</script>

乔纳森

“使用 node-webkit 创建 Windows 桌面应用程序”

关于javascript - Node-Webkit SaveAs 文件对话框仅触发唯一文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18245783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com