如何识别用户关闭的html文件上传向导而不选择文件

时间:2016-10-10 06:49:00

标签: javascript jquery html

我需要确定用户是否关闭了浏览器的文件上传向导而未选择文件。关闭向导后应立即进行识别,并且必须能够使用JavaScript进行识别。用户关闭文件选择向导以进行上载时是否会触发任何事件?我们也可以使用JQuery。我已经使用了几个事件,但是在向导关闭后没有一个事件立即被激活。



<input type="file" id="fileTaker" 
               oncancel="cancelledFile()"
               onabort="abortedFile()"
               onclose="closedFile()"
               onclick="clickedFile()"
               onchange="changedFile()"
               onblur="bluredFile()"
               onemptied="emptiedFile()"
               onformchange="formChanged()"
               onsuspend="suspendFile()"
               />
&#13;
&#13;
&#13;

只有当用户选择文件并打开上传时才会触发onchange(在向导关闭后,onchange会偶尔发生火灾。但我需要可靠的事件)。打开向导时onclick和onblur会触发。其他人没有解雇。 谢谢。

1 个答案:

答案 0 :(得分:2)

您可以在change元素,blur事件<input type="file">处使用focuswindow个事件;检查<input type="file">元素.files属性.length是否等于0

<script>
  function changedFile(el, fromfocus) {
    // remove `fromfocus` to set condition
    // to `true` for both `onchange` event 
    // and direct call to `changedFile`
    // from within `window.onfocus` handler
    if (el.files.length === 0 && fromfocus) {
      console.log(el.files.length);
    }
  }
  
  function handleBlur(el) {
    window.onfocus = function() {
      this.onfocus = null;
      // pass `true` to prevent `if` statement 
      // being `true` for both `onchange` event
      // and direct call to `changedFile` here
      changedFile(el, true);
    }
  }
</script>
<input type="file" id="fileTaker" 
       onchange="changedFile(this)" 
       onblur="handleBlur(this)" />