我正在使用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(),所以它必须有一些逻辑,比如在我的第二个示例中,如果状态器是t,那么它必须有一些逻辑,但是为什么每个页面上都会有这个视频呢?
发布于 2014-12-12 07:12:59
根据Rob在这个线程中的回答,以及我以前使用jQuery Cookie插件的情况,path
参数定义了该cookie的可用和可访问的URL。
此外,根据jQuery Cookie 文档 on gitHub:
undefined
,而不是null
,如下所示:var isCookieSet = typeof $.cookie('video') === 'undefined';
尽管如此,我还是不明白为什么您需要求助于jQuery Cookie,因为您只能在Events页面中显示链接(并触发链接),如下所示:
jQuery(function($) {
$(document).ready(function() {
if( window.location.href.search(/\/events/) > -1 ) $(".fancybox-cookie").trigger("click");
});
});
如果您之所以求助于jQuery Cookie,是因为您只想发射一次视频,并且能够检测到它是否已经被触发,那么在这种情况下,它将是有意义的,您可以这样做:
jQuery(function($) {
$(document).ready(function() {
if( window.location.href.search(/\/events/) > -1 ) {
if( typeof $.cookie('video') === 'undefined' ) {
var date = new Date();
var minutes = 2400;
date.setTime(date.getTime() + (minutes * 60 * 1000));
$.cookie('video', 'some_value', { expires: date });
$(".fancybox-cookie").trigger("click");
}
}
});
});
不需要设置path变量,因为同样根据Docs,默认的路径值是cookie创建的url。
https://stackoverflow.com/questions/27441511
复制