que - ¿Es posible capturar el evento de diálogo Abrir/Guardar archivo del navegador usando Javascript?
que se puede hacer con javascript en html (3)
¡Sí! Puede aprovechar que la mayoría de los navegadores (Probado en Chrome, Firefox e IE) beforeunload
evento de beforeunload
previa justo antes de que se abra el cuadro de diálogo Descarga de archivos individuales.
Así que código como este funcionará:
$(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.
*/
} );
Abre y ejecuta este fragmento para verlo en acción:
$(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>
Tenga en cuenta que antes de la beforeunload
también se beforeunload
antes de que se cierre la pestaña o la ventana, por lo que debe planificar en consecuencia. Eso no debería ser un problema para esta pregunta como se indica.
Usando Javascript es posible escuchar el evento de abrir / guardar el cuadro de diálogo del archivo del navegador. Quiero realizar una acción cuando se me notifique que el cuadro de diálogo para guardar el archivo se abrió ahora. Específicamente, quiero ocultar un marcador de carga cuando se abre el cuadro de diálogo (pero esto podría ser cualquier otra acción)
Creo que puedo hacerlo para un cuadro de diálogo que creo, sin estar seguro de que pueda hacerse para el cuadro de diálogo estándar del navegador.
Cualquier puntero para eso sería realmente útil.
No, no hay evento para eso.
Observa todos los elementos que pueden invocar el diálogo del archivo.
Por ejemplo, manejar eventos de clic en <input type="file" />
elements. algo como:
$(''input:file'').click(function(){ // onclick of file input
$(''.spinner'').hide(); // hide spinner
});