DNN Cookie弹窗不显示 报reading 'getVAR' undefined错误解决方案咨询
问题根因
DNN 内置的 Cookie 政策弹窗依赖的前端 JS 逻辑,默认会查找页面上 dnn:label 控件渲染的对应 DOM 节点作为挂载/配置入口,你当前使用的皮肤文件未全局嵌入该标签,只有页面模块携带该标签时JS才能找到目标元素触发弹窗,控制台报错就是JS查找目标元素失败抛出的执行中断异常。
解决方案(修改SKIN文件)
- 首先确认你的
.ascx皮肤文件头部已注册 dnn 控件前缀,没有的话补充如下代码:
<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.UI.WebControls" Assembly="DotNetNuke.Web" %>
- 在皮肤的全局公共区域(比如页脚代码块,不影响页面视觉的任意位置)添加如下标签:
<dnn:label ID="cookieConsentPlaceholder" runat="server" Text="" CssClass="placeholder_label" />
- ID 可自定义,只要保证当前皮肤内唯一即可,Text 为空所以不会渲染可见内容,不会影响现有页面布局
- 若添加标签后仍未生效,可在皮肤头部手动引入 DNN 官方 Cookie 政策依赖的 JS 资源,补充如下代码:
<dnn:JavaScriptReference Name="CookieConsent" Path="~/Resources/Shared/Scripts/CookieConsent.js" runat="server" />
- 排查你当前皮肤的CSS代码,不要给
placeholder_label类设置display: none、visibility: hidden等会导致元素不可被JS识别的属性。
修改后重新打包部署皮肤,清除DNN缓存后刷新页面即可看到弹窗全局生效,不需要每个页面的模块单独加标签。
内容的提问来源于stack exchange,提问作者Tig7r
相关产品推荐
相关产品推荐

