1

セッションごとに 1 回だけ表示したい通知バーがあります。または、あらかじめ決められた時間だけ通知を表示したくない場合があります。セッション ストレージを使用していますが、残念ながら正しく動作しません。

ありがとう

これが私のコードです ----------->

    <script>
$(document).ready(function() {

            var $alertdiv = $('<div id = "alertmsg"/>');
            $alertdiv.text("Join our email list and receive the latest updates at 3Elements Review.");
            $alertdiv.bind('click', function() {
                $(this).slideUp(200);
            });
            $(document.body).append($alertdiv);
            $("#alertmsg").fadeIn("slow"); 
            setTimeout(function() { $alertdiv.fadeOut(400) }, 6000);
                            });

$(window).load(function(){
        if(typeof(window.sessionStorage) != 'undefined') {
        $("#alertmsg").val(window.sessionStorage.getItem('mySessionVal'));
            window.sessionStorage.setItem('mySessionVal', $("#alertmsg").val());
            window.sessionStorage.setItem('storedWhen', (new Date()).getTime());
    }
});
</script>
4

1 に答える 1

3

sessionStorage に window.onload を使用する明らかな理由はありません。DOM 対応で十分ですか?

また、メッセージを表示する前に値がストレージに存在するかどうかを確認する必要があります。そうでない場合、メッセージは常に次のように表示されます。

$(document).ready(function() {
    if (typeof window.sessionStorage != undefined) {
        if (!sessionStorage.getItem('mySessionVal')) {
    //          ^^^ you can check time here as well ?
            $('<div />', {
                id   : "alertmsg",
                text : "Join our email list and receive the latest updates at 3Elements Review.",
                on   : {
                    click: function() {
                        $(this).slideUp(200);
                    }
                }
            }).appendTo('body').fadeIn("slow").delay(6000).fadeOut("slow");
            sessionStorage.setItem('mySessionVal', true);
            sessionStorage.setItem('storedWhen', Date.now());
        }
    }
});

フィドル

于 2013-11-01T22:43:59.567 に答える