var testApp = angular.module('testApp',['ngSanitize']);
testApp.controller('TestController',function($scope,$sce){
$scope.htmlString = "<span>Test HTML</span><script>alert('Hello Script');</script>";
$scope.toTrusted = function(htmlContent) {
if(htmlContent && htmlContent != "") {
return $sce.trustAsHtml(htmlContent);
}
return "";
};
});
<html ng-app="testApp">
<body ng-controller="TestController">
<div ng-bind-html="toTrusted(htmlString)"></div>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.11/angular-sanitize.min.js"></script>
<script type="text/javascript" src="resources/js/controllers/testController.js"></script>
</body>
</html>
Я использую ng-bind-html для строки рендеринга как html. Иногда я получаю скриптовый тег в строке html, и я не хочу вставлять/загружать тег script.So, что я должен сделать, чтобы предотвратить тег скрипта.
Я также искал решение этой проблемы, кто-то говорит, что просто удалите тег сценария из строки перед рендерингом html. Поэтому, пожалуйста, кто-нибудь подскажет мне. Каков лучший способ сделать это?
Я разрабатываю приложение для чата с помощью angularjs и firebase. И для передачи сообщений чата я использую директиву ng-bind-html. Что я заметил, что если пользователь отправляет скриптовый тег как часть сообщений чата, но при этом запускается сценарий. Так Я хочу ограничить запуск этого скрипта.
Если вы используете $ sce.trustAsHtml, вам нужно использовать только ng-bind.
<div ng-bind="toTrusted(htmlString)"></div>
Попробуйте это и дайте мне знать.