IE中的Document.write和windows.location不起作用

问题描述 投票:0回答:1

我有一个奇怪的行为,我正在与自己斗争,以弄清楚可能是什么错误。

我有一个HTML页面,在正文加载时,检查查询字符串中是否存在变量“TRANSACTIONVALUE”。如果字符串存在且具有特定值(8374),则将用户重定向到特定页面(让我们将其称为“后端页面”)。由于有时候这个“后端页面”有点慢(它会触发一个有时因无活动而停机的代理,所以需要等待重新激活它),我解决了它只是添加了一个document.write,只是说“请求当然。 ..请等待“在重定向之前在相同的空白页面中。

我的代码适用于所有浏览器,但Internet Explorer除外,用户在第一个语句“document.write”中被阻止。

<!doctype html>
<html lang="us">
  <head>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML;CHARSET=UTF-8">
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    <META HTTP-EQUIV="EXPIRES" CONTENT="-1">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="../../../../favicon.ico">
  <script>
function CheckHeaderStatus() {
    if (getQueryVariable("TRANSACTIONVALUE")==8374)
        {
          document.write("Request in course... Please wait");
          window.location.href='http://backendapplication.goto.com/Default.aspx?TARGET='+TRANSACTIONVALUE;  
    }
}     
</script>    
  </head>
  <body onload="CheckHeaderStatus()" class="text-center">
      
<div> any text <div>
  </body>
</html>

会发生什么,它适用于Chrome,Safari,Firefox。在这些情况下,如果用户具有TRANSACTIONVALUE = 8374,在正文加载时,他可以看到“请求当然...请稍候”消息,然后重定向到页面http://backendapplication.goto.com/Default.aspx?TARGET='+ TRANSACTIONVALUE

现在,在Internet Explorer中,使用TRANSACTIONVALUE = 8374的用户只能看到“请求当然...请稍候”消息。页面停止前进,因此它们不会重定向到另一页。可能是什么问题?

我已经测试了其他方法来获得相同的(如我的工作所证明的):“从页面中删除所有内容,创建一个div,我可以写下等待的按摩,然后重定向,所以:

while (document.firstChild) {
document.removeChild(document.firstChild);  
};


// create new DIV
var newDiv = document.createElement("div");
  newDiv.innerHTML = "<h1>Request in course... Please wait</h1>";
window.location.href='http://backendapplication.goto.com/Default.aspx?TARGET='+TRANSACTIONVALUE;

但同样,它适用于所有浏览器期望的IE。我用IE9,10,11测试过。我错过了什么或者是IE的问题?

谢谢大家!

javascript html internet-explorer-11 window.location document.write
1个回答
0
投票

我已经用这种方式解决了:

function CheckHeaderStatus() {
    if (getQueryVariable("TRANSACTIONVALUE")==8374)
        {
		Redirect();
            function Redirect() {
          document.write("Request in course... Please wait");
          window.location.href='http://backendapplication.goto.com/Default.aspx?TARGET='+TRANSACTIONVALUE;  
    }
}} 

这样它也适用于IE :-)

© www.soinside.com 2019 - 2024. All rights reserved.