В Safari не работает регистрация событий щелчка по всему телу (Javascript) - PullRequest
0 голосов
/ 27 июня 2019

События Android и Chrome работают нормально, попробуйте следующие варианты:

$window.onclick = function () {
   if ($scope.accountsMenuOpen) {
       $scope.accountsMenuOpen = false;
       $scope.$apply();
   }
};

document.body.addEventListener('click', function () {
  if ($scope.accountsMenuOpen) {
       $scope.accountsMenuOpen = false;
       $scope.$apply();
   }
});

document.querySelector('body').addEventListener('click', function () {
   if ($scope.accountsMenuOpen) {
       $scope.accountsMenuOpen = false;
       $scope.$apply();
   }
});

Я дважды проверяю, и в Safari включен Javascript; также попробуйте следующую директиву angularjs:

<body click-capture>

Я просто отлаживаю в Safari, и в некоторых элементах запускается событие click (где элементы находятся в контексте контроллера ng). Я не знаю, почему не регистрируется во всех элементах тела.

1 Ответ

1 голос
/ 27 июня 2019

После более подробного изучения событий касаний в сафари есть один, спасибо Carcigenicate за подсказку

document.body.addEventListener('touchend', function () {   
  if ($scope.accountsMenuOpen) {
     $scope.accountsMenuOpen = false;
     $scope.$apply();
  }
});
...