Estoy haciendo una carga de archivos, y si el usuario envía la navegación fuera de la página antes de que se complete la carga del archivo, deseo preguntarle si está seguro de que desea navegar fuera y perder su carga.
En Chrome, sin embargo, bloquea la alerta durante la beforeunload : Blocked alert('....') during beforeunload.
function confirmLooseUpload() { if (THIS.getAttribute('uploading') == "progress" ) { return !alert("Wait for upload to complete? Press cancel to abort upload and navigate away now") } } window.addEventListener('beforeunload', confirmLooseUpload) Investigué el problema y hay sendBeason , y parece ser para datos pequeños, no para una carga de 10 MB. Además, la mayoría de los resultados detallan cómo abortar una POST de búsqueda, en lugar de cómo asegurarse de que finalice.
Algunas soluciones como esta sugieren que simplemente devolver una cadena parece cancelar el evento de descarga, pero no funcionó para mí:
function confirmLooseUpload(event) { if (THIS.getAttribute('uploading') == "progress" ) { return "There is a file upload in progress, please wait for it to finish..." } } window.addEventListener('beforeunload', confirmLooseUpload)