jquery - 如何让 cookieConsent 导航在移动设备上自动扩展?
问题描述
背景
我有一个 ASP.Net Core v2.1 Web 应用程序,它在启动时将 CheckConsentNeeded 标志设置为 true。
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None;
});
我在主页上有一个注册表单,它在发布操作中使用 [ValidateAntiForgeryToken]。
问题
如果有人在 cookie 被接受之前尝试注册,他们会收到以下错误:
ERROR - ExceptionHandlerMiddleware - An unhandled exception has occurred while executing the request. System.FormatException: Input string was not in a correct format.
要求
我想在移动设备上自动展开 cookieConsent 面板,直到他们接受 cookie 以使其更明显地表明他们需要这样做,而不必通过手动单击汉堡图标来查看。
采取的行动
我可以看到 _cookieConsentPartial 中的代码给了我需要的标志(showBanner):
@{
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
var showBanner = !consentFeature?.CanTrack ?? false;
var cookieString = consentFeature?.CreateConsentCookie();
}
@if (showBanner)
{
我希望我可以在这里添加一些 JQuery 代码来将类“in”添加到 .navbar-collapse 选择器中。
$.when($.ready).then(function () {
var $navBar = $(".navbar-collapse");
if (!$navBar.hasClass("in")) {
$navBar.addClass("in");
}
});
但是,有 2 件事。
- 我不能在 cookieConsentPartial 中使用 JQuery,因为部分加载的位置高于脚本文件。
- 如果我在页面加载后在控制台中运行 JQuery 脚本,我会得到菜单而不是 cookieConsent 内容。汉堡点击切换也停止工作。
谁能建议在 Asp.Net Core 2.1 中实现此要求的最佳方法?
解决方案
今天早上我又回到了这个问题上,结果证明它最终可以直接实施。
我只需要将“in”类添加到 _cookieConsentPartial 上的 navbar-header 下方的 navbar-collapse div。
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#cookieConsent .navbar-collapse">
<span class="sr-only">Toggle cookie consent banner</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse **in** navbar-collapse">
<p class="navbar-text">
<i class="fa fa-info-circle"></i> We use our cookies and third party cookies to improve our services, obtain statistics, allow you to remember your login details, and to facilitate your interaction with social networks.
</p>
...
推荐阅读
- html - 在 Angular 指令的 HTML 模板的表格单元格中的同一行上显示文本和按钮
- php - 如何在日期范围之间动态添加天数间隔
- chisel - 测试火箭芯片实用程序'Arbiters.scala',出现错误'位操作......必须是硬件......“
- python - 在哪里可以找到 python-igraph transitivity_undirected 源代码
- php - SimplesamlPHP 无限重定向
- java - 如何仅使用列名从 excel 中获取列值?
- angular - 下拉列表中的选定项目未在 Angular 2/4 中显示
- jquery - 引导选择无法正确更新选定的选项
- google-chrome - 如何删除所有重复的 URL 并仅保留 Google Chrome 历史记录中的最后一次访问?
- c++ - Qt 为多行文本绘制轮廓