【发布时间】:2014-12-12 23:40:34
【问题描述】:
我正在使用 jQuery Cookie 和 Fancybox 来显示一些预告视频。
我在页面底部设置了一个自定义链接,它看起来像这样:
<a class="fancybox-cookie" href="http://www.youtube.com/embed/the_video_link?autoplay=1&rel=0"></a>
在我的 jQuery 中,我正在显示这样的视频:
(function($){
$(document).ready(function() {
//Cookie
$.cookie('video', 'some_value', { path: '/events' });
$('.fancybox-cookie').fancybox({
openEffect : 'elastic',
closeEffect : 'elastic',
padding : 20,
maxWidth : 800,
maxHeight : 600,
fitToView : false,
width : '70%',
height : '70%',
autoSize : false,
type : 'iframe',
}).trigger('click');
//$.removeCookie('video');
});
})(jQuery);
从代码中可以看出,我正在尝试使用 cookie 调用视频,但仅在特定页面上调用,在本例中为 /events 页面。
即使我这样做,视频也会显示在每一页上。
我的整个想法是每次用户进入网站并访问“事件”页面时,Fancybox 都会显示视频,但如果访问者查看其他页面,则不应该显示视频。
我在哪里错了?
这是我尝试过的另一种方法,它只显示一次,我设置了 2400 分钟过期,在此之前我设置了一分钟,没关系,但它仍然显示在每个页面上。
(function($){
$(document).ready(function() {
if ($(window).width() > 768) {
//Cookie
var check_cookie = $.cookie('video');
var date = new Date();
var minutes = 2400;
date.setTime(date.getTime() + (minutes * 60 * 1000));
if(check_cookie == null) {
$.cookie('video', 'some_value', { expires: date, path: '/events' });
$('.fancybox-cookie').fancybox({
'openEffect': 'elastic',
'closeEffect': 'elastic',
'padding' : 20,
'autoScale' : false,
'width' : 800,
'height' : 705,
'type' : 'iframe',
'scrolling' : 'no'
}).trigger('click');
}
else {
return false;
}
//$.removeCookie('video');
}
});
})(jQuery);
编辑: 我后来意识到,在我的第一个示例中,我的错误是 .trigger() 我在每个页面上都调用了,所以它必须有一些逻辑,就像我的第二个示例中的 if statement ,但为什么视频会在每一页上触发?
【问题讨论】: