Fancybox popup once time for session

前端 未结 3 980
臣服心动
臣服心动 2021-01-06 23:39

I have a popup with fancybox that appear at load page.

I need to show the popup once a time, if the user change page and back on the page with popup doesn\'t reveal

相关标签:
3条回答
  • 2021-01-07 00:13

    Using the jQuery cookie plugin you suggested:

    $(document).ready(function() {
        if(typeof $.cookie('popupVideoPlayed') == 'undefined') {
            $.cookie('popupVideoPlayed', 'true'); // set a session cookie so it won't play again
            $('#yt').trigger('click');
        }
    });
    

    Remember to delete the inline body onload event handler.

    0 讨论(0)
  • 2021-01-07 00:19

    For browser consistency, you may need to delay the fancybox load execution for the first time so try this code :

    function openFancybox() {
        // launches fancybox after half second when called
        setTimeout(function () {
            $('#yt').trigger('click');
        }, 500);
    };
    $(document).ready(function () {
        var visited = $.cookie('visited'); // create the cookie
        if (visited == 'yes') {
            return false; // second page load, cookie is active so do nothing
        } else {
            openFancybox(); // first page load, launch fancybox
        };
        // assign cookie's value and expiration time
        $.cookie('visited', 'yes', {
            expires: 7 // the number of days the cookie will be effective
        });
        // your normal fancybox script
        $("#yt").click(function () {
            $.fancybox({
                // your fancybox API options
            });
            return false;
        });
    });
    

    See code at this JSFIDDLE

    NOTES :

    • In order to see the cookie working, you may need to use jsfiddle's full screen mode http://jsfiddle.net/aVE9N/show/
    • I would advice you to update (at least) your fancybox version from v1.3.1 to v1.3.4
    • It's assumed you are loading properly the jQuery cookie plugin in your page
    0 讨论(0)
  • 2021-01-07 00:24

    ¡UPDATED!

    If you're using the newest JavaScript Cookie plugin this is for you:

    HTML

    <a class="c-p" href="#cookies" style="display: none;">Inline</a>
    <div id="cookies" style="display: none;">
        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dignissimos rem nulla quae dolorum omnis possimus, ducimus nisi pariatur harum debitis quo, excepturi nam ratione modi. Architecto, enim. Amet, saepe mollitia?</p>
    </div>
    

    JavaScript

    function openFancybox() {
        setTimeout( function() {jQuery('.c-p').trigger('click'); },1500);
    }
    jQuery(document).ready(function() {
        if (Cookies.get('visited')) {
            return false;
        } else {
            Cookies.set('visited', 'no', { expires: 7 });
        } 
        if (Cookies.get('visited') == 'yes') {
            return false;
        } else {
            openFancybox();
            Cookies.set('visited', 'yes');
        }
        jQuery('.c-p').fancybox();
    });
    

    Note: I implemeted it in my custom WordPress theme and it worked perfectly.

    0 讨论(0)
提交回复
热议问题