Tengo otra solución simple a continuación para esto que funcionó perfectamente para mí.
En primer lugar, cree un CSS con el nombre de la clase Lockon que es una superposición transparente junto con la carga de GIF como se muestra a continuación
.LockOn {
display: block;
visibility: visible;
position: absolute;
z-index: 999;
top: 0px;
left: 0px;
width: 105%;
height: 105%;
background-color:white;
vertical-align:bottom;
padding-top: 20%;
filter: alpha(opacity=75);
opacity: 0.75;
font-size:large;
color:blue;
font-style:italic;
font-weight:400;
background-image: url("../Common/loadingGIF.gif");
background-repeat: no-repeat;
background-attachment: fixed;
background-position: center;
}
Ahora necesitamos crear nuestro div con esta clase que cubra toda la página como una superposición cada vez que se carga la página
<div id="coverScreen" class="LockOn">
</div>
Ahora necesitamos ocultar esta pantalla de portada siempre que la página esté lista y para que podamos restringir al usuario hacer clic / disparar cualquier evento hasta que la página esté lista
$(window).on('load', function () {
$("#coverScreen").hide();
});
La solución anterior estará bien siempre que la página se esté cargando.
Ahora la pregunta es después de cargar la página, cada vez que hacemos clic en un botón o un evento que llevará mucho tiempo, debemos mostrar esto en el evento de clic del cliente como se muestra a continuación
$("#ucNoteGrid_grdViewNotes_ctl01_btnPrint").click(function () {
$("#coverScreen").show();
});
Eso significa que cuando hacemos clic en este botón de impresión (que llevará mucho tiempo dar el informe), mostrará nuestra pantalla de portada con GIF, lo que da resultado y, una vez que la página esté lista, se activará la función de carga de Windows y se ocultará la pantalla de portada. una vez que la pantalla está completamente cargada.