javascript - 如何显示自定义html标签?

标签 javascript html angularjs

我正在尝试读取用户输入文本并显示它。

我已经尝试过:

<div>
    <input type="text" ng-model="post.content" />
</div>

<div>
    <div ng-bind-html="post.content| htmlize"></div>
</div>

脚本:

let app = angular.module('myApp', ['ngSanitize']);

app.controller('myController', function ($scope) {

    // controller implements...

}).value('HTMLIZE_CONVERSIONS', [

    { expr: /\n+?/g, value: '<br />' },
    { expr: /\[([BUI])\](.+)\[\/\1\]/g, value: '<$1>$2</$1>' }

]).filter('htmlize', function (HTMLIZE_CONVERSIONS) {

    return function (string) {
        return HTMLIZE_CONVERSIONS.reduce(function (result, conversion) {
            return result.replace(conversion.expr, conversion.value);
        }, string || '');

    };
});

当我输入时:

[B]bold[/B] [U]underline[/U] [I]italic[/I]

它将转换为:

bold u̲n̲d̲e̲r̲l̲i̲n̲e̲ italic

我的问题:如何防止代码检测到其他html标签?

我已经尝试过:

案例:

<script>alert('')</script>

结果:

案例:

<h1>text</h1>

结果:

文本

我的目标:我只想转换[B][U][I]<b><u><i>并将它们显示为 html 标签(如我所示),否则;将其显示为纯文本。

我怎样才能做到这一点?

最佳答案

你可以

替换<&lt;

替换>&gt;

显示<>纯文本,然后替换 []带有 < 的字符和>使它们正确的 HTML 标签

关于javascript - 如何显示自定义html标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40671617/

相关文章:

javascript - 在 jquery 弹出窗口中更改标题栏的颜色

javascript - 使用 jQuery 更改 flaticon 的类和 css

java - 创建一个访问本地java代码的网站

javascript - 保留 int.toString() 中的前导零

javascript - angular ui 可排序回调

javascript - 为什么数据绑定(bind)并不总是适用于原语?

javascript - 在 error.responeText 中取回 JSON 数据

javascript - 引用 JavaScript 对象

html - Swift 中的解析/转义

angularjs - 部署在云服务器上时使用 localhost 地址进行 $http.get 请求