Вы можете использовать другой div, который открывается и покрывает всю страницу, код ниже написан таким образом.
Не мешая большей части вашего кода, я добавил <div>
, который будет скрыт назагрузка страницы. Это <div>
будет показано при открытии всплывающего окна, а то же самое <div>
будет скрыто при закрытии диалога.
$(document).ready(function() {
jQuery(document).on("click", ".ext_link", function() {
$('#scrLoader').show();
$("<div>Thank you for visiting You are now being taken to an external site. </div>").dialog().attr('id', 'dialog-confirm').css('display', 'none');
var link_val = this;
$('#dialog-confirm').dialog({
title: "External Link",
height: "auto",
width: 410,
resizable: false,
buttons: {
"Ok": function() {
window.open(link_val.href);
$(this).dialog("close");
$(this).dialog('destroy').remove();
},
Cancel: function() {
$('#scrLoader').hide();
jQuery(this).dialog("close");
$(this).dialog('destroy').remove();
}
}
}).dialog("widget").find(".ui-dialog-titlebar").hide();
return false;
});
});
#scrLoader {
background-color: #333;
opacity: 0.8;
position: fixed;
left: 0px;
top: 0px;
z-index: 100;
height: 100%;
width: 100%;
overflow: hidden;
background-image: url('your path to a loader gif');
background-position: center;
background-repeat: no-repeat;
}
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css" />
<input type="button" class="ext_link" value="click me" />
<div id="scrLoader" style="display: none;" hidden="true"></div>
Вы также можете использовать GIF, например загрузочный GIF, который будет отображаться, когда этот конкретный div открыт, так что пользователь понимает, что какой-то процесспродолжается.
Надеюсь, это поможет.