JavaScript所实现的所见即所得富文本编辑器

3

如何在输入框内设置文本样式?您能为我展示如何单独更改文本颜色的最简单示例吗?


你想从头开始创建一个吗? - eriksv88
2个回答

3

两个链接都已损坏。 - Amit Kumar Gupta

0

你可以采用以下4种方法:

  1. 创建一个文本区域,让用户修改内容。在按键或按钮点击时使用insertHtml来预览div。Trix也是采用这种方法但是以编程方式实现。
  2. 添加一些文本区域。使用一些markdown处理器来渲染文本区域的内容。
  3. 处理光标闪烁的每一个动作,并实现类似Google文档的功能,不使用execCommands。我相信quilljs也不使用execCommands。
  4. 您可以使用几乎所有现代浏览器都支持的execCommands。这里是最简单的示例。或者查看示例,它使用这个小代码运行一组execCommands来制作一个富文本编辑器。您可以进一步简化它。

示例

angular.module("myApp", [])
    .directive("click", function () {
        return {
            restrict: "A",
            link: function (scope, element, attrs) {
                element.bind("click", function () {
                    scope.$evalAsync(attrs.click);
                });
            }
        };
    })
    .controller("Example", function ($scope) {
        $scope.supported = function (cmd) {
            var css = !!document.queryCommandSupported(cmd.cmd) ? "btn-succes" : "btn-error"
            return css
        };
        $scope.icon = function (cmd) {
            return (typeof cmd.icon !== "undefined") ? "fa fa-" + cmd.icon : "";
        };
        $scope.doCommand = function (cmd) {
            if ($scope.supported(cmd) === "btn-error") {
                alert("execCommand(“" + cmd.cmd + "”)\nis not supported in your browser");
                return;
            }
            val = (typeof cmd.val !== "undefined") ? prompt("Value for " + cmd.cmd + "?", cmd.val) : "";
            document.execCommand(cmd.cmd, false, (cmd.val || ""));
        }
        $scope.commands = commands;
        $scope.tags = [
    'Bootstrap', 'AngularJS', 'execCommand'
  ]
    })

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