每次会话弹出一次花哨的盒子

Fancybox popup once time for session

本文关键字:一次 盒子 会话      更新时间:2023-09-26

我有一个弹出与花式框出现在加载页。

我需要显示一次弹出窗口,如果用户更改页面,并返回与弹出页面不显示第二次。

我读过,可以使用cookie插件(https://github.com/carhartl/jquery-cookie),但我不明白如何集成在这个代码…

我有一个简单的网站在html/css。

这是代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js">     </script>
<script type="text/javascript" src="jquery.fancybox-1.3.1.js"></script>
<link rel="stylesheet" type="text/css" href="jquery.fancybox-1.3.1.css" media="screen" />
<script src="jquery.cookie.js"></script>

<script type="text/javascript">
function openFancybox() {
setTimeout(function () {
    $('#yt').trigger('click');
}, 500);
};
$(document).ready(function () {
var visited = $.cookie('visited');
if (visited == 'yes') {
    return false; // second page load, cookie active
} else {
    openFancybox(); // first page load, launch fancybox
}
$.cookie('visited', 'yes', {
    expires: 7 // the number of days cookie  will be effective
});
$("#yt").click(function() {
            $.fancybox({
                    'padding'        : 0,
                    'autoScale'      : false,
                    'transitionIn'   : 'none',
                    'transitionOut'  : 'none',
                    'title'          : this.title,
                    'width'          : 680,
                    'height'         : 495,
                    'href'           : this.href.replace(new RegExp("watch''?v=", "i"),  'v/'),
                    'type'           : 'swf',
                    'swf'            : {
                        'wmode'              : 'transparent',
                        'allowfullscreen'    : 'true'
                    }
                });
    return false;
});
});
</script>
</head>
<body onload='$("#yt").trigger("click");'>
  <a id="yt" href="https://www.youtube.com/watch?v=ROTYmNckBCw&amp;fs=1&amp;autoplay=1"><img  src="http://fancyapps.com/fancybox/demo/1_s.jpg" alt=""/></a>
</body>
</html>

为了浏览器的一致性,您可能需要延迟第一次加载fancybox的执行,所以请尝试以下代码:

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

指出

:

  • 为了看到cookie工作,你可能需要使用jsfiddle的全屏模式http://jsfiddle.net/aVE9N/show/
  • 我建议你更新(至少)你的fancybox版本从v1.3.1到v1.3.4
  • 假设你正在正确加载jQuery cookie插件在你的页面

使用您建议的jQuery cookie插件:

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

记得删除内联主体onload事件处理程序

如果你正在使用最新的JavaScript Cookie插件,这是为你:

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

注意:我在我的自定义WordPress主题中实现了它,它工作得很好。