gpt4 book ai didi

Google Chrome 的 Javascript 重定向问题

转载 作者:行者123 更新时间:2023-11-29 17:26:08 25 4
gpt4 key购买 nike

我的问题有点类似于this所以问题。但是,由于我的实现方式有些不同,因此我提出了一个新问题。

我有一个页面,其中后退按钮将被禁用(经过大量谷歌搜索后得到了脚本)。此页面的作用是重定向到不同的位置(ASP.NET MVC Controller 操作)。由于该操作需要时间才能完成,因此会显示一条等待消息。下面是我用来禁用后退按钮和重定向页面的脚本。

<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 中,确实调用了我的 Controller 中的操作并进行了处理,但处理完成后页面未重定向。你们中的大多数人可能觉得有必要更改流程/实现,但我在这件事上没有发言权,所以必须坚持这个流程。

平台:ASP.NET MVC 2.0
jQuery 版本:1.4.1
Chrome 版本:16.0.912.63m

更新:

以下是从 fiddler 和 chrome 网络选项卡截取的屏幕截图。

fiddler :
Fiddler Screenshot http://img43.imageshack.us/img43/638/200response.png

Chrome :
Chrome Screenshot 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>

最佳答案

事实上,这就是发生的事情:

  1. 函数 changeHashOnLoad() 设置超时以在历史记录中存储第二个哈希值(“#1”)。但是函数现在没有执行(50ms后)

  2. 主要代码继续运行到执行重定向到 document.forms[0].action 的行

  3. 现在仅:执行超时函数 changeHashAgain ()。页面被重定向到“#1”,并且取消了对 document.forms[0].action 的重定向

一个简单快速的解决方法:延迟主重定向。

setTimeout(function () { window.location.href = document.forms[0].action; },100);

所以您可以说“为什么选择 Chrome?” ? Chrome 和他的 javascript engine V8只是比其他浏览器快得多。 50ms后,chrome仍然开始重定向,而FF和IE还没有!

关于Google Chrome 的 Javascript 重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8644150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com