1

この JavaScript コードについて少し助けが必要です。

私はこのコードを持っています:

jQuery(document).ready(function(){
    if (document.cookie.indexOf('visited=true') == -1) {
    var fifteenDays = 1000*60*60*24*1;
    var expires = new Date((new Date()).valueOf() + fifteenDays);
    document.cookie = "visited=true;expires=" + expires.toUTCString();
    window.setTimeout(
function() {
    jQuery.colorbox({href:"/popup.htm", open:true, iframe:false, innerWidth:600, innerHeight:490}); 
        },

30000 )}});   

1 日 1 回、30 秒後にポップアップを開くことになっています。問題は、30 秒後に開いているポップアップがページにとどまることです。クライアントが他のページに移動しても、30秒後に開くようにする方法はありますか? したがって、ユーザーがページに 15 秒滞在し、別のページに 15 秒滞在すると、ポップアップが表示されます。

前もって感謝します

4

3 に答える 3

1

まさか。ページがアンロードされると、他に何もできなくなります。ウィンドウが既に表示されているかどうかを確認するには、サーバー上の他のリソース (Cookie、セッションなど) を使用する必要があります。

于 2012-08-01T10:43:03.947 に答える
1

はい。

しかし、それを使用することはできませんdocument.cookie

サーバー側の Cookie または HTML ローカル ストレージ/セッション ストレージを使用する必要があります。

のようなものResponse.SetCookie("Visited", true)。バックエンドとして何を使用しているのかわかりません。

于 2012-08-01T10:40:55.380 に答える
1

ここで克服すべき基本的な問題は、ページ間で「状態」を渡すことです。この例では既に Cookie を使用しているため、それを使用します。ユーザーがサイトにアクセスした時間 (最初は 0) でセッション Cookie を設定する必要があります。次に、Cookie を頻繁に (おそらく 5 秒ごとに) 1 回「ポーリング」して、合計サイト滞在時間を更新し、それを読み戻す必要があります。30 秒以上の場合、ポップアップを起動します。

したがって、使用する代わりに:

setTimeout(function() {
    // open alert box
}, 30000);

次のようにします。

setTimeout(function() {
    // Increment 'time-on-site' cookie value by 5000
    // Then, if 'time-on-site' cookie value >= 30000, fire popup
}, 5000);

更新 もちろん、5 秒ごとに更新された値を通信する必要があるため、これにはサーバーとのやり取りがさらに必要になります。

于 2012-08-01T10:44:03.493 に答える