2012-02-24 12 views
0

私はJavascriptリダイレクトを使用して、X秒後に訪問者をリダイレクトします。しかし、同じページに訪問者を連れて行くページ上のリンクもあります。訪問者が最初にリンクをクリックすると、リダイレクトを停止したいと思います。クリックイベントでJavascriptリダイレクトを無効にする方法

リンクをクリックすると新しいウィンドウが開きますが、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> 

任意のアイデア

これはコードではJavascriptが、コードをリダイレクトし、私のHTMLページに

を使用していますどのように私はこれを達成することができますか?

+0

溶液はすでに「答え」セクションで記述されたが、私はあなたにエラーに指摘したかったですコード。 'window.onload = setTimeout(myRedirect、timeout);'は、ページ全体が確実に読み込まれているとは限りません。基本的には、ここで何をしているのですか?ブラウザがJSコードを処理した直後にタイムアウトを設定し、タイマーIDを 'windows.onload'に格納します。正しい実装は 'window.onload = function(){setTimeout(myRedirect、timeout)}; ' – penartur

答えて

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); falseを返します。私は良いと思う。 – Akshay

+1

'return false'文がリンク処理を停止すると、タイマーがクリアされるだけでなく、リンクをクリックすることによるリダイレクトもキャンセルされます。 –

+0

ありがとう@RohanPrabhu、私はあなたのとジョセフのコードを組み合わせて試してみましたが、ここで何か不足しているようです。ページはもうリダイレクトされません(私はリンクをクリックしなかったと考えて) vinny

0

あなたがてclearTimeoutを使って、あなたのsetTimeoutをキャンセルする必要があり、変数の例here

関連する問題