Document.write и windows.location вместе в IE не работают - PullRequest
0 голосов
/ 06 сентября 2018

У меня странное поведение, и я борюсь с собой, чтобы выяснить, в чем может быть ошибка.

У меня есть 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?

Спасибо всем !!!

1 Ответ

0 голосов
/ 07 сентября 2018

Я решил следующим образом:

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: -)

...