УБИТЬ функцию временной задержки "setTimeout, перенаправляющую на страницу", ЕСЛИ НАБЛЮДАЮТСЯ НЕКОТОРЫЕ элементы UI - PullRequest
2 голосов
/ 26 января 2011

Hy мой вопрос на самом деле о том, как убить уже перенаправление загрузки.

Я получил время между открытием страницы, которое настроено на 10-секундную задержку перед переходом к месту назначения:

var strUrl = /*from query string, or somewhere else..*/

window.onload = function()
{ 
  window.setTimeout('redirect(strUrl)', 10000);
}
function redirect(strUrl)
{
  document.location=strUrl;
}

Теперь в теле HTML у меня есть несколько элементов пользовательского интерфейса,2 кнопки (продолжить, закладка), 1 флажок (больше не показывать, ..)

Что-то вроде:

<body onOrientationChange="smartOrientation();">

  <div id="img_logo">
    <img src="#">  
  </div>

  <div id="txt">
    <p>
      ...blabla...
    </p>   
  </div>

  <div id="btn_bookmark">
    <a href=""  
        class="button green" 
        name="name" 
        type="submit" 
        value="Bookmark">Bookmark
    </a>
  </div>

  <!-- checkboxes,..etc -->

</body>

Теперь я хочу, чтобы перенаправление setTimeout всегда было активным, но если в те 10 сек.пользователь нажимает на флажок или кнопку закладки, я хочу, чтобы он ломался / останавливался.

PSEUDO:

onload: setTimeOut (URL, 10sec);- 1, .. 2, .. 3, ..

слушатель: если (# div1 || # div2 || .. # divN) нажата?-> немедленно STOP / BREAK setTimeout (убить 10-секундную бомбу)

ps (сторона Q): я использую jquery и установил onload после dom.ready (), потому что в этом случае dom.ready всегданемного быстрее, чем при нагрузке.Будет ли из-за этого проблема в гонке?

Ответы [ 2 ]

6 голосов
/ 26 января 2011

объявите тайм-аут в переменной:

var t = window.setTimeout('redirect(strUrl)', 10000);

и позже используйте эту переменную

clearTimeout(t);

, чтобы убить его

подробнее здесь

кроме того: используйте document.ready () ИЛИ onload, чтобы предотвратить себя от безумных гонок.

2 голосов
/ 26 января 2011
 var mytimer = window.setTimeout('redirect(strUrl)', 10000);

 /*....*/

 if (condition){

   clearTimeout(mytimer)

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...