如果浏览器不是Internet Explorer,则使用ng-class。

3

我有一个问题,我想在项目中只有在浏览器不是Internet Explorer的情况下才添加CSS类。

我可以使用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";
            }
        }

这个链接https://dev59.com/YmAg5IYBdhLWcg3w_fLV可以帮助你找到浏览器,然后使用`ng-class`方法。 - Pankaj Parkar
2个回答

5
您可以通过函数来分配类,例如:
data-ng-class="getClass()"

getClass()中实现功能来检测IE,如果检测到它,则返回空字符串,否则返回一个由空格分隔的类名列表。类似于下面的内容:检测IE 编辑:根据@jsonmurphy的评论添加函数isIe。
function isIe() {
  return false || !!document.documentMode;
}

$scope.getClass = function() {
  if(isIe()) {
    return "";
  }
  else {
    return "className1 className2 ... ";
  }
}

你如何定义isIe()函数?这实际上是我的问题。 - xechelonx
1
@jsonmurphy的回答是一种方法,或者我在我的回答中提供的解析用户代理的链接是另一种方法。你最好使用一个评价很高的方法(比如@jsonmurphy提供的链接),然后只需包装需要检测IE的部分。像这样:function isIe() { return false || !!document.documentMode; } - user3357118
好的,我按照你建议的做了:$scope.isIe = function () { return false || !!document.documentMode; }$scope.getClass = function () { if (isIe()) { return ""; } else { return "form-panel input-lg"; } } - xechelonx
我没有给 isIe 加上作用域。如果你想要加上作用域,请将 getClass() 中的调用更改为 if($scope.isIe()) - user3357118

1

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

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接