IE中的Document.write和windows.location一起无法正常工作

时间:2018-09-06 11:01:52

标签: javascript html internet-explorer-11 window.location document.write

我的行为很奇怪,我在和自己战斗,以便找出可能出什么错误。

我有一个HTML页面,在加载页面时,该页面检查查询字符串中是否存在变量“ TRANSACTIONVALUE”。 如果该字符串存在并且具有特定值(8374),则用户将被重定向到特定页面(我们称其为“后端页面”)。 由于有时此“后端页面”有点慢(它会触发有时因不活动而关闭的代理,因此需要等待重新激活它),我解决了它,只是添加了一个document.write,上面写着“当然是请求。 ..请在同一空白页中等待”,然后重定向。

我的代码适用于所有浏览器,但Internet Explorer除外,在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的问题?

谢谢!!

1 个答案:

答案 0 :(得分: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:-)