Complianz环境下Fancybox/Lightbox模态框视频未被Cookie拦截的解决方案咨询
一、无需更换插件,用Complianz API直接适配
Complianz自带全局函数可获取用户Cookie授权状态,直接在Fancybox触发前做拦截判断即可,不用换工具:
- 替换原有Fancybox初始化代码,改成手动触发+授权校验:
// 绑定点击事件,先做Cookie校验 $("[data-fancybox]").on("click", function(e) { // 检查用户是否允许统计类Cookie(对应你加的cmplz-stats类) if (cmplz_get_consent("statistics") !== "allow") { e.preventDefault(); // 弹出Complianz的Cookie设置弹窗引导用户授权 cmplz_open_cookie_settings(); return; } // 授权通过,手动打开Fancybox $.fancybox.open({ src: $(this).data("src"), type: "iframe", iframe: { css: { maxWidth: '50%' }, preload: false, smallBtn: false, } }); });
- 修复HTML标签的小问题:你的a标签重复写了
class属性,合并成一个更规范:
<a class="vimeo cmplz-stats" data-fancybox="video-gallery" data-src="https://player.vimeo.com/video/876283694?autoplay=false"> <img alt="" width="200" src="https://www.website.com/myposter.jpg"> </a>
二、手动实现模态框的方案(可选)
如果不想依赖Fancybox,自己写轻量模态框也很简单,核心逻辑还是结合Complianz的授权判断:
- 页面里提前写好隐藏的模态框容器,里面的iframe默认不设置
src属性 - 点击海报图时,先调用
cmplz_get_consent()检查授权状态 - 授权通过后,给iframe赋值视频地址并显示模态框;未授权则触发Cookie设置弹窗
总结
优先用第一种方案,直接适配现有工具,不用额外引入新插件,代码改动最小,完全能实现未授权时拦截视频加载的需求。
内容的提问来源于stack exchange,提问作者moody
相关产品推荐
相关产品推荐

