2010-12-29 7 views
2

Javascriptで記述されたサイト要素の読み込みの進行状況を示すスクリプトがあります。私はこのスクリプトをindex.htmlファイルに入れて、メインページでのみ実行します。それは完全にうまく動作しますが、現在はindex.htmlに着陸したときに進捗状況が表示されます。メインページが既にキャッシュされているため、サブページからメインページに戻ったときに問題があります。ユーザーがページ上に移動したときにのみスクリプトを実行する方法

私の質問は次のとおりです。ユーザーがサブページから戻ったときではなく、ユーザーがページ上を移動したときにのみスクリプトを実行する方法は?

+0

のonloadが、それはないでしょう。.. – Pratik

+2

@Pratikありませんを行います。 – JakeParis

+0

永続性がキャッシュに関連付けられていないため、Cookieは常に動作しません。進行状況インジケータはどのように機能しますか?それは一定の時間表示されていますか? – typeof

答えて

0

あなたはdocument.referrerを使用することができます:ボディ/フォームで

<script> 
if(document.referrer && 
document.referrer.indexOf("yoursite.com") == -1) 
{ 
    // Page loading process script goes here. 
} 
</script> 
+0

これは私の問題を解決したようですが、最初のdocument.refferer条件がなければ正常に動作します。私は何かを忘れましたか? –

+0

最初のdocument.referrerは、ドキュメント参照があるかどうかをテストすることです。 「まれに」ブロックされ、存在しない場合もあります。それがなければ、ローディングプロセスはこれらの人々に示され、サブページから来ることが「知られている」人々には表示されません。 – Wayne

+0

私はあなたがURLを入力したと推測して、ブラウザーに参照者のための値がない - それは空白でした。 – Wayne

1

初めてユーザーがindex.htmlをヒットしたときにクッキーを作成します。クッキーをチェックし、クッキーが設定されていない場合にのみスクリプトを実行してください。

if(!isset($_COOKIE['something'])) { 
    // run your loading script; 
    setcookie('something','someValue'); 
} 

出力をブラウザに送信する前に、上記のコードを確認してください。

+0

あなたのコードはPHPであり、JavaScriptではないことに注意してください。 – typeof

4

cookiesを試して、Javascriptを実行しないタイミングを制御してください。クッキーに加えて

-1
<html> 
<head> 
.. 
</head> 
<body onload="doStuff()"> 
... 
<script type="text/javascript" language="JavaScript"> 
//<![CDATA[ 
function doStuff(){ 
    //check condition 
    if (readCookie('checkFirstTime')!=null) return; 

    //otherwise set the flag && do your thing 
    createCookie('checkFirstTime','yep',1); 
    alert("Welcome home Yo!"); 
    ... 
} 

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

//]]> 
</script> 
... 
</body> 
</html> 
+0

JMC Creativeに言ったことを詳しく説明しています:isset()、$ _COOKIE []、setcookie()はjavascriptの組み込みプロパティ/関数ではありません。 – typeof

+0

ちょうど一般的な説明がクッキーを管理するための機能の詳細なカップルではなく必要と考えられた。とにかく、私は答えを編集しました。うまくいきたいです –

関連する問題