Я написал функцию Jquery, которая затемняет экран после определенного периода бездействия, создает всплывающее окно, позволяющее пользователю нажимать кнопку, чтобы оставаться в системе, и выводить их из системы (закрывая окно приложения), если они не отвечайте вовремя.
Среда - ASP.NET (VB). Технически мы не используем мастер-страницы, но у нас есть родительская страница, в которой находятся наш верхний и нижний колонтитулы, а также мой код Jquery, вызываемый из этого окна и загружаемый через IFrame.
Мы используем версию ActiveX txControl в качестве нашего текстового редактора, встроенного в приложение. Мы собираемся выполнить обновление очень скоро, но сейчас у меня есть одна классическая страница ASP, в которую мне нужно интегрировать код тайм-аута, но когда код тайм-аута включается, файл ASP не "отключается" как остальные дочерние окна и кнопка для продолжения сеанса невидимы, и, как я предполагаю, оказались за страницей ASP.
Вот моя основная функция тайм-аута, которая находится в файле .js и вставляется в родительское окно с помощью тега скрипта:
function pop_init() {
// show modal div
$("html").css("overflow", "hidden");
$("body").append("<div id='popup_overlay'></div><div id='popup_window'></div>");
//$("#popup_overlay").click(popup_remove); // removed to make sure user clicks button to continue session.
$("#popup_overlay").addClass("popup_overlayBG");
$("#popup_overlay").fadeIn("slow");
// build warning box
$("#popup_window").append("<h1>Warning!!!</h1>");
$("#popup_window").append("<p id='popup_message'><center>Your session is about to expire. Please click the button below to continue working without losing your session.</center></p>");
$("#popup_window").append("<div class='buttons'><center><button id='continue' class='positive' type='submit'><img src='images/green-checkmark.png' alt=''/> Continue Working</button></center></div>");
// attach action to button
$("#continue").click(session_refresh);
// display warning window
popup_position(400, 300);
$("#popup_window").css({ display: "block" }); //for safari using css instead of show
$("#continue").focus();
$("#continue").blur();
// set pop-up timeout
SESSION_ALIVE = false;
window.setTimeout(popup_expired, WARNING_TIME);
}
Я прикрепил код «оставайся в живых» к событиям mousedown, keydown и blur в дочерних окнах следующим образом:
<script src="http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" type="text/javascript" language="javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
window.parent.reportChildActivity();
});
</script>
<script type="text/javascript">
$(document).bind("mousedown keydown blur", function() {
window.parent.reportChildActivity();
});
</script>
Я попытался добавить следующее в мой файл ASP, только чтобы получить результат, который вы видите на прикрепленном изображении:
<script src="http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" type="text/javascript" language="javascript"></script>
<script src="JScripts/RC_jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
window.parent.reportChildActivity();
});
</script>
<script type="text/javascript">
$(document).bind("mousedown keydown blur", function() {
window.parent.reportChildActivity();
});
</script>
Может кто-нибудь сказать мне, что мне нужно сделать, чтобы тайм-аут Jquery перекрывал все окно, как было задумано? Спасибо за ваше время и любую помощь, которую вы можете оказать!
Top pic - это желаемый результат и результат на всех страницах aspx. Нижняя картинка - это то, что я получаю на классической странице осины.
РЕДАКТИРОВАТЬ: Ну, я подумал обернуть все основные части страницы ASP в div (называемый "divPage"), а затем скрыть div. Это работает как брелок, если я вызываю "$ ('# divPage'). Hide ();" от сценария в разделе заголовка файла ASP - он скрывает div, как только документ загружается. Однако мне нужно условное скрытие, поэтому я попытался поместить тот же код в мой файл Jquery, в функцию pop_init, и хотя остальная часть кода в этой функции выполняется для меня без нареканий, код для скрытия divPage ничего не делает. Любые идеи, почему я получаю другие результаты из кода iniline, в отличие от функции, включенной в файл RC_Jquery.js?