2012-02-24 48 views
0

我正在使用JavaScript重定向以在X秒後重定向訪問者。但是,頁面上還有一個鏈接,可讓訪問者訪問同一頁面。如果訪問者先點擊鏈接,我想停止重定向。如何在點擊事件中禁用Javascript重定向

請注意,單擊鏈接時會在新窗口中打開,但javascript重定向將在同一窗口中打開。

這是用我的HTML頁面的代碼,

JavaScript重定向代碼:

<script> 
<!-- 
timeout = '5000'; // milliseconds/1000th of a sec 
window.onload = setTimeout(myRedirect, timeout); // ensure we load the whole page 

function myRedirect() { 

window.location = "http://www.mypage.com/page1.html"; 
} 
//--> 
</script> 

而且有這個鏈接,在新窗口中打開:

<a href="http://www.mypage.com/page2.php" target="_blank">Click Here</a> 

任何想法我怎麼能做到這一點?

+0

該解決方案已經寫了「答案」部分中,但我想在一個錯誤指出你的碼。 'window.onload = setTimeout(myRedirect,timeout);'不能確保整個頁面已被加載。基本上,你在這裏做的是:當瀏覽器處理你的JS代碼時立即設置超時,然後將計時器ID存儲在'windows.onload'中。正確的實現是'window.onload = function(){setTimeout(myRedirect,timeout)};' – penartur 2012-02-24 07:03:52

回答

3

店的超時通話。

var timeout = '5000'; 
var myTimeout; 
window.onload = function(){ 
    myTimeout = setTimeout(myRedirect, timeout); 
} 

,當你希望它取消,明確表示暫停該變量:

clearTimeout(myTimeout) 
0

你只需要清除超時單擊鏈接時:

<a href="somepage.html" onclick="javascript:clearTimeout(t);">click here</a> 

注意對象「T」必須取之於setTimeout函數返回。所以,現在看起來像:

var t; 

window.onload = function() { 
    t = setTimeout(myRedirect, timeout); 
} 

而且,我可以在這裏指出的是,你在這裏做的是一般不推薦(有一定的規則,這個異常)。最好使用HTTP頭進行重定向,但由於我不知道你的要求是什麼,所以我不能發表評論。

+0

onclick =「clearTimeout(t); return false;」我認爲更好。 – Akshay 2012-02-24 07:10:33

+1

'return false'語句會停止鏈接處理,即不僅定時器被清除,而且由於點擊鏈接導致的重定向也將被取消。 – 2012-02-24 07:16:27

+0

感謝@RohanPrabhu,我試着將你的和約瑟夫的代碼結合起來,提出一個解決方案,但似乎我在這裏失去了一些東西。頁面不再重定向(考慮到我沒有點擊鏈接) vinny 2012-02-24 08:07:23

0

您應該取消使用clearTimeout您的setTimeout,看到一個變量例如here

相關問題