События 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). Я не знаю, почему не регистрируется во всех элементах тела.