是否可以使用javascript捕获浏览器的文件打开/保存对话框事件

使用javascript可以监听浏览器的文件打开/保存对话框事件。 我收到通知现在已打开保存文件对话框时,我想执行一个操作。 具体来说,我想在对话框打开时隐藏加载微调器(但这很可能是任何其他操作)

我相信我可以为我创建的对话框执行此操作,不确定是否可以对浏览器的标准对话框执行此操作。

任何指针都非常有帮助。

不,没有事件发生。

是! 您可以利用大多数浏览器(在Chrome,Firefox和IE上测试好)在单个文件下载对话框打开之前触发beforeunload事件。

所以像这样的代码将起作用:

 $(window).bind ("beforeunload", function (zEvent) { // PERFORM DESIRED ACTIONS HERE. /* This code will fire just before the Individual-file Download dialog opens. Note that it will also fire before the tab or window is closed, but that should not be a problem for this application. */ } ); 

打开并运行此代码段以查看其中的操作:

 $(window).bind ("beforeunload", function (zEvent) { $("#dwnldStatus").text ("This code runs just before the file open/save dialog pops up."); } ); $("#directDwnload").click ( function () { fireDownload (); } ); $("#ResetTimer").click ( function () { $("#dwnldStatus").html ( 'Download will start in 3 seconds.' ); fireTimer (3); } ); function fireDownload () { window.location.assign ( "//phs.googlecode.com/files/Download%20File%20Test.zip" ); } function fireTimer (secondsLeft) { this.secondsLeft = secondsLeft || 30; this.countdownTimer = this.countdownTimer || null; if ( ! this.countdownTimer) { this.countdownTimer = setInterval ( function() { this.secondsLeft--; $("#timeleft").text (this.secondsLeft); if (this.secondsLeft <= 0) { clearInterval (this.countdownTimer); this.countdownTimer = null; fireDownload (); } }, 1000 ); } } 
  

Activate one of the download buttons. The timer button is just like any other javascript initiated download, no additional click is needed.

The javascript detects when the File/Save dialog pops up and changes the status to "This code runs just before the file open/save dialog pops up.".

Note that it is not necessary to download the file. You can cancel the download.

观察可以调用文件对话框的所有元素。

例如,处理元素上的单击事件。 就像是:

 $('input:file').click(function(){ // onclick of file input $('.spinner').hide(); // hide spinner });