Как проверить, установлен ли флажок? - PullRequest
0 голосов
/ 26 сентября 2019

В настоящее время я пытаюсь сделать так, чтобы в моем флажке отображалось всплывающее окно для уведомлений браузера, если оно установлено.Если пользователь снял флажок, в браузере появится всплывающее окно с отклонением, и наоборот.

Вот фрагмент того, что я сейчас пытаюсь, но он не работает.

if(checkbox_id == (queue_notification)) {
        if(checkbox_state) {
          $('input#user_hop_queue_notification').is(':checked') == '1'
             if(Notification.requestPermissionre !== "granted"){
              Notification.requestPermission(function(status) {
                console.log('Notification permission status:', status);
              });
            }
          }
        else {
          $('input#user_hop_queue_notification').is(':checked')== ('0');
          if(Notification.requestPermission !== "denied"){
              Notification.requestPermission(function(status) {
                console.log('Notification permission status:', status);
              });
            }
          }
      }

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Ваш код выглядит очень странно, вы, кажется, проверяете значение is(':checked'), но на самом деле это не так (без if -статирования ??).Есть переменная checkbox_state, которая проверена, но не установлена?И вы, похоже, проверяете, возвращает ли значение is(':checked') строку 0 или 1.Хотя это работает, если вы протестируете это вручную в консоли или просмотрите документацию, вы увидите, что он возвращает true или false, так что это может сделать ваш код намного проще.

Так что янаписал бы ваш код следующим образом:

  if(checkbox_id == (queue_notification)) {
    checkbox_state = $('input#user_hop_queue_notification').is(':checked'); 
    if(checkbox_state) {
      if(Notification.requestPermissionre !== "granted"){
          Notification.requestPermission(function(status) {
            console.log('Notification permission status:', status);
          });
      } 
    } else {
      if(Notification.requestPermission !== "denied"){
          Notification.requestPermission(function(status) {
            console.log('Notification permission status:', status);
          });
      }
    }
  }

Если я правильно понял ваше намерение, это должно работать больше, чем ожидалось.Мы могли бы изменить рефакторинг переменной check_state, так как мы больше не можем ее использовать (но сейчас я хотел бы остаться ближе к вашему исходному коду) (это могло бы все еще улучшить читаемость, так что это было бы хорошей причиной сохранить ее,однако is(:checked) довольно понятен сам по себе).

Если вы пытаетесь установить проверенное состояние, вы должны использовать следующий код:

 $('input#user_hop_queue_notification').prop('checked', true);

(если не очевидно, true "поставит галочку", false отключит).

0 голосов
/ 26 сентября 2019

Api Notification - это то, что пользователь также может отрицать, поэтому даже если вы установите для свойства Notification.permission значение granted, это не будет работать.Таким образом, ваш лучший шанс - использовать метод Notification.requestpermission и проверить, предоставил ли пользователь доступ к уведомлениям, а затем использовать api для уведомлений для отображения уведомлений.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...