Подтвердить что ты не робот

Какова цель angular -sanitize?

Я просто использовал примеры для директивы angular и openlayers ЗДЕСЬ и наткнулся на следующие пример:

<!DOCTYPE html>
<html ng-app="demoapp">
  <head>
    <script src="../bower_components/openlayers3/build/ol.js"></script>
    <script src="../bower_components/angular/angular.min.js"></script>
    <script src="../bower_components/angular-sanitize/angular-sanitize.min.js"></script>
    <script src="../dist/angular-openlayers-directive.js"></script>
    <link rel="stylesheet" href="../bower_components/openlayers3/build/ol.css" />
    <script>
        var app = angular.module('demoapp', ['openlayers-directive']);
        app.controller('DemoController', [ '$scope', function($scope) {
            angular.extend($scope, {
                center: {
                    lat: 0,
                    lon: 0,
                    autodiscover: true
                }
            });
       }]);
    </script>
  </head>
  <body ng-controller="DemoController">
    <openlayers ol-center="center"  height="400px"></openlayers>
    <h1>Center autodiscover example</h1>
    <form>
        Latitude : <input type="number" step="any" ng-model="center.lat" />
        Longitude : <input type="number" step="any" ng-model="center.lon" />
        Zoom : <input type="number" step="any" ng-model="center.zoom" />
        <button ng-click="center.autodiscover=true">Discover position</button>
    </form>
  </body>
</html>

Пример можно увидеть как живой пример ЗДЕСЬ.

Мой вопрос о загружаемых файлах, я не совсем понимаю, почему загружается ниже script:

<script src="../bower_components/angular-sanitize/angular-sanitize.min.js"></script>

Какова цель вышеуказанного script?

EDIT::: я узнал репо git и документы для этого модуля в angular ЗДЕСЬ., но я до сих пор не понимаю цели этого script, в документации нет даже одного примера.

Я закодировал в jQuery честный бит, так может кто-нибудь объяснить это в терминах jQuery?

4b9b3361

Ответ 1

Если вы включаете angular-sanitize script, входы дезинфицируются путем разбора HTML в токены. Все безопасные маркеры (из белого списка) затем сериализуются обратно в правильно экранированную строку html. Это означает, что никакой небезопасный ввод не может попасть в возвращаемую строку.

Я включил небольшой пример ниже, вдохновленный этим сообщением . Если вы запустите этот script с помощью var app = angular.module("app", ["ngSanitize"]);, ссылки html отображаются правильно. Однако, если вы прокомментируете это утверждение и раскомментируете var app = angular.module("app", []);, появится следующее сообщение об ошибке: Error: [$sce:unsafe] Attempting to use an unsafe value in a safe context.

<!DOCTYPE html>
<html>

<head>
  <link rel="icon" type="image/x-icon" href="favicon.ico">

  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular-sanitize.min.js"></script>
  <!-- BEGIN disable refresh -->
  <script type="text/javascript">
    //Including ngSanitize ensures html links get properly sanitized
    var app = angular.module("app", ["ngSanitize"]);
    //If you use this code instead no html links get displayed 
    //var app = angular.module("app", []);

    app.controller("mainController", function($scope) {
      var main = this;

      main.links = [
        "<a href='http://google.com'>Google</a>",
        "<a href='http://odetocode.com'>OdeToCode</a>",
        "<a href='http://twitter.com'>Twitter</a>"
      ];
    });
  </script>

</head>

<body ng-app="app">
  <section ng-controller="mainController as main">
    <nav>
      <ul>
        <li ng-repeat="link in main.links" ng-bind-html="link">
        </li>
      </ul>
    </nav>
  </section>
</body>

</html>