ng-класс, если браузер не Internet Explorer

У меня проблема, я хочу добавить класс css к элементу, только если браузер не Internet Explorer.

Могу ли я сделать это с помощью Angular JS?

что-то вроде:

<div ng-class="myClass : "BROWSER IS IE" ? default"><div>

РЕШЕНИЕ:

HTML:

       <div data-ng-class="getClass()"></div>

JAVASCRIPT:

        $scope.isIe = function () {
            return false || !!document.documentMode;
        }

        $scope.getClass = function () {
            if ($scope.isIe()) {
                return "";
            }
            else {
                return "yourClass1 yourClass2 yourClass3";
            }
        }

person xechelonx    schedule 28.07.2015    source источник
comment
эта ссылка stackoverflow.com/questions/22947535/ поможет вам найти браузер, а затем использовать ng-class с методом   -  person Pankaj Parkar    schedule 28.07.2015


Ответы (2)


Вы можете назначить класс с помощью такой функции, как:

data-ng-class="getClass()"

В getClass() реализованы функции для обнаружения IE. и вернуть пустую строку, если она обнаружена, но вернуть список имен классов, разделенных пробелами, если это не так. Что-то вроде:

EDIT: добавить функцию isIe на основе комментария @jsonmurphy

function isIe() {
  return false || !!document.documentMode;
}

$scope.getClass = function() {
  if(isIe()) {
    return "";
  }
  else {
    return "className1 className2 ... ";
  }
}
person user3357118    schedule 28.07.2015
comment
и как бы вы определили функцию isIe()? это собственно мой вопрос - person xechelonx; 28.07.2015
comment
Ответ от @jsonmurphy - один, или ссылка, которую я имею в своем ответе для анализа пользовательского агента, - другая. Лучше всего использовать метод с высоким рейтингом (например, тот, на который ссылается @jsonmurphy), и просто обернуть часть, необходимую для обнаружения IE. Нравится function isIe() { return false || !!document.documentMode; } - person user3357118; 28.07.2015
comment
Хорошо, я сделал, как вы предложили: $scope.isIe = function () { return false || !!document.documentMode; } $scope.getClass = function () { if (isIe()) { return ; } else { вернуть панель формы input-lg; } } - person xechelonx; 28.07.2015
comment
Я не рассматривал isIe. Если вы хотите, чтобы он был ограничен, измените вызов в getClass(), чтобы он соответствовал if($scope.isIe()) - person user3357118; 28.07.2015

Популярный/стандартный подход к стилю для IE заключается в использовании условных комментариев< /а>. В любом случае, этот вопрос может быть представляет для вас интерес. Конкретно:

var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6

Примечание: isIE будет обнаруживать только 6–11, а не его преемника Edge.

Итак, в вашем случае это может быть:

<div ng-class="{myClass : (false || !!document.documentMode), default: !document.documentMode}"><div>

Надеюсь, это поможет.

person jsonmurphy    schedule 28.07.2015