KILL定时延迟功能"setTimeout重定向到页面"如果单击了某些UI元素

Pat*_*Neo 2 javascript jquery redirect settimeout

我的问题是关于如何杀死已经加载的重定向.

我有一个页面打开,在到达目的地之前设置了10秒的延迟:

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

window.onload = function()
{ 
  window.setTimeout('redirect(strUrl)', 10000);
}
function redirect(strUrl)
{
  document.location=strUrl;
}
Run Code Online (Sandbox Code Playgroud)

现在在HTML体中我有一些UI元素,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>
Run Code Online (Sandbox Code Playgroud)

现在我想要的是始终将setTimeout重定向激活,但是如果在那10秒内.用户点击复选框或书签按钮,我希望它打破/停止.

伪:

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

监听器:if(#div1 ||#div2 || ..#divN)被点击? - >立即停止/ BREAK setTimeout(杀掉10秒炸弹)

ps(Q面):我使用jquery,并在dom.ready()之后设置了onload,因为在那个whay dom.ready总是比onload快一点.因为这会有种族问题吗?

Cas*_*jne 6

在变量中声明超时:

var t = window.setTimeout('redirect(strUrl)', 10000);
Run Code Online (Sandbox Code Playgroud)

然后使用该变量

clearTimeout(t);
Run Code Online (Sandbox Code Playgroud)

杀了它

更多在这里

除此之外:使用document.ready()或onload,以防止你自己的疯狂赛车条件.