使用 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 <span id="timeleft">3</span> 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
);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<p>Activate one of the download buttons. The timer button is just like any other javascript initiated download, no additional click is needed.</p>
<p>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.".</p>
<p>Note that it is not necessary to download the file. You can cancel the download.</p>
<div id="dwnldStatus"></div>
<button id="ResetTimer">Set timer to 3 seconds.</button>
<button id="directDwnload">Download the file now.</button>
注意beforeunload
也会在选项卡或窗口关闭之前触发,因此请相应计划。正如所述,这不应该成为这个问题的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)