Моя проблема чем-то похожа на этот ТАК вопрос. Однако, поскольку моя реализация немного отличается, я создал новый вопрос.
У меня есть страница, где кнопка «Назад» должна быть отключена (получил скрипт после долгих поисков). Эта страница выполняет перенаправление в другое место (действие контроллера ASP.NET MVC). Поскольку для завершения действия требуется время, отображается сообщение ожидания. Ниже приведен скрипт, который я использовал для отключения кнопки «Назад» и перенаправления страницы.
<script type="text/javascript">
function changeHashOnLoad() {
window.location.href += "#";
setTimeout(changeHashAgain, 50);
}
function changeHashAgain() {
window.location.href += "1";
}
var storedHash = window.location.hash;
window.setInterval(function () {
if (window.location.hash != storedHash) {
window.location.hash = storedHash;
}
}, 50);
//do after all images have finished loading
$(window).load(function () {
changeHashOnLoad();
//show the wait message
$("#domWaitMessage").show();
//redirect to the new page/controller action
window.location.href = document.forms[0].action;
});
</script>
Мой код выше работает в IE и Firefox, но не в Chrome. Экран сильно мерцает в Opera, но перенаправление все еще работает. В Chrome вызывается действие в моем контроллере, и обработка происходит, но страница не перенаправляется после завершения обработки. Большинство из вас, ребята, могут почувствовать необходимость изменить поток / реализацию, но я не имею права голоса в этом вопросе, поэтому должен придерживаться этого потока.
Platform: ASP.NET MVC 2.0
jQuery Version: 1.4.1
Chrome Version: 16.0.912.63m
UPDATE:
Ниже приведены снимки экрана, сделанные на вкладке fiddler и chrome network.
Скрипач:
Скриншот Fiddler http://img43.imageshack.us/img43/638/200response.png
Chrome:
Снимок экрана Chrome http://img594.imageshack.us/img594/6381/chromenetwork.png
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Dummy Title</title>
</head>
<body>
<form id="form1" method="post" action="Home/BookingConfirmation">
<div id="domWaitMessage">
<img src="Content/images/preloader.gif" alt="Please Wait...." />
</div>
</form>
</body>
</html>
ОБНОВЛЕНИЕ РАБОЧИЙ СЦЕНАРИЙ
<script type="text/javascript">
function changeHashOnLoad() {
window.location.href += "#";
setTimeout(changeHashAgain, 50);
}
function changeHashAgain() {
window.location.href += "1";
}
var storedHash = window.location.hash;
window.setInterval(function () {
if (window.location.hash != storedHash) {
window.location.hash = storedHash;
}
}, 50);
//do after all images have finished loading
$(window).load(function () {
changeHashOnLoad();
//show the wait message
$("#domWaitMessage").show();
//ORIGINAL REDIRECTION CODE
//window.location.href = document.forms[0].action;
//NEW WORKING REDIRECTION CODE
setTimeout(function () { window.location.href = document.forms[0].action; }, 100);
});
</script>