0

ある人が私の Web サイトを N ページ閲覧した後、ニュースレターを購読するかどうかを尋ねるポップアップ ウィンドウを表示したいと考えています。

数秒遅れてポップアップを表示するサンプル コードを見つけました。1 回だけ要求するサンプルも見つかりましたが、通過したページ数を追跡できるサンプルは見つかりませんでした。

特定の数のページがトラバースされた後にウィンドウを上げるサンプル JS コードはどこにありますか?

私の単純な分析は、通常、N ページでのスクリプトの各呼び出しは異なる呼び出しになるため、前のページの呼び出しの記録がないということです。したがって、各コピーは、前のコピーによって設定された Cookie を読み取り、それをインクリメントして、元に戻す必要があります。次に、N=3 と私が適切だと思うその他の条件が満たされると、ポップアップがトリガーされます。

4

2 に答える 2

1

あなたの分析は正しいです!追跡されたサーバー側の Cookie であれ、古き良き JavaScript Cookie であれ、何らかの Cookie が必要です。

それらを実装する方法について私が見た中で最も優れた概要は次のとおりです: Quirksmode Cookies

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;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

ページ数を追跡するために Cookie の値を更新するには (サーバー側でこれを行っていないと仮定します)、Cookie をリセットし、新しい値で新しい Cookie を設定する必要があります。既存の Cookie の値を更新/変更することは、実際にはサポートされている Cookie の操作ではありません。

または、3 つの Cookie を作成することもできます。あなたの整数を浮かせるものは何でも;)

于 2013-04-29T05:10:27.403 に答える
1

リンクをクリックすると、HTML5 履歴 API にプッシュされ、履歴の長さがチェックされます。ページ上のすべてのリンクにイベントハンドラを追加することもできます。

//first 2 paraemeters could be NULL, last is the URL
history.pushState(data, event.target.textContent, event.target.href);

//check length of history
history.length

HML5 履歴 API の詳細: http://html5doctor.com/history-api/

編集:実際には、通常のリンクのプッシュイベントは必要ありません。テストするだけですconsole.log(history.length);

于 2013-04-29T05:23:51.533 に答える