Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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_Filedialog - Fatal编程技术网

使用JavaScript捕获文件浏览窗口的关闭

使用JavaScript捕获文件浏览窗口的关闭,javascript,filedialog,Javascript,Filedialog,我使用infle让用户浏览他们机器上的文件。是否有方法捕获窗口是否在未选择文件的情况下关闭?例如,如果单击了x <input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this)"/> 谢谢我想模糊事件可以做到: <input type="file" onchange="changed=true; handleFiles(this

我使用infle让用户浏览他们机器上的文件。是否有方法捕获窗口是否在未选择文件的情况下关闭?
例如,如果单击了x

<input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this)"/>


谢谢

我想
模糊
事件可以做到:

<input
  type="file"
  onchange="changed=true; handleFiles(this)"
  onblur="if(!changed) alert('nothing selected'); changed=false;"
/>

我所做的是: 在用户打开窗口后启动计时器,在该计时功能中,我每0.5秒检查一次文件是否已使用布尔变量选择。一旦用户选择文件或出现HTML5 DnD,我立即停止计时器。我希望这对某人有帮助

<div id="uploader"><input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this)"/></div>

<button dojoType="dijit.form.Button" id="fileSelect" type="button" onmouseup="browse();">Browse</button> 

var fileselected = false;
function handleFiles(input){
    fileselected = true;
//use input
}

var interval;
function browse(){
    fileselected = false;
    var fileElem = document.getElementById("inFile");
    fileElem.click();
    interval = setInterval(setdiv, 500);

}
function setdiv(){
    if(!fileselected){  
        //do staff until user decides to Dnd or  browse for file again
        clearInterval(interval);
    }   
}

浏览
var=false;
功能手柄文件(输入){
fileselected=true;
//使用输入
}
var区间;
函数浏览(){
fileselected=false;
var fileElem=document.getElementById(“infle”);
fileElem.click();
间隔=设置间隔(设置间隔,500);
}
函数setdiv(){
如果(!fileselected){
//在用户决定再次进行Dnd或浏览文件之前,请停止工作
间隔时间;
}   
}
有了来自的解决方案,我认为您可以使用:

<input type="file" name="data" id="inFile" />

请澄清您指的是打开文件对话框还是整个浏览器窗口。嗯,我担心这是中止选择时出现的第一个事件-我看不到其他方式。我来这里是因为我只想在选择隐藏文件输入时突出显示其下的div,所以,在我的例子中,使用onfocus和onblur是正确的解决方案。它如何帮助捕捉取消时关闭对话框的事件?如果用户单击“取消”,计时器将永远运行:-(
var fileElem = document.getElementById("inFile");
var fileSelected = null;
fileElem.onclick = function(e) {
    fileSelected = this.value;
    this.value = null;
});
/* or use this in your browse() function:
    fileElem.value = null;
*/
fileElem.onchange = function(e) { // will trigger each time
    handleFileDialog(this.value === fileSelected);
};

function handleFileDialog(changed) {
    // boolean parameter if the value has changed (new select) or not (canceled)
}