Как заставить навигацию cookieConsent автоматически расширяться на мобильных устройствах?

Фон

У меня есть веб-приложение ASP.Net Core v2.1, в котором для флага 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 вещи.

  1. Я не могу использовать JQuery в cookieConsentPartial, потому что партиал загружается выше, чем файлы сценария.
  2. Если я запускаю сценарий JQuery в консоли после загрузки страницы, я получаю меню, а не содержимое cookieConsent. Переключатель щелчка гамбургера тоже перестает работать.

Может ли кто-нибудь предложить лучший способ реализовать это требование в Asp.Net Core 2.1?

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
156
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я вернулся к этому сегодня утром, и в конце концов, оказалось, что это несложно реализовать.

Мне просто нужно было добавить класс «in» к div navbar-collapse под заголовком navbar на _cookieConsentPartial.

<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>
    ...

Другие вопросы по теме