Ace代码编辑器:将整个代码呈现为HTML?

CodeManX

Ace在突出显示代码时很聪明,并且不会渲染所有代码,但仅比当前视图所需的内容多一点。

但是,对于我的用例,我需要获取整个代码的呈现HTML源代码。有没有办法让它一次渲染我所有的代码?

CodeManX

“用户”向我指出了正确的方向。我使用ace版本共同破解了一些对我有用的东西:https//github.com/ajaxorg/ace-builds/

解决方案预览

左侧为常规ACE编辑器,右侧为静态突出显示的HTML。最初,页面源用作内容,但可以在编辑器中进行更改,并且立即重新渲染右侧面板。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>ACE Static Highlighter</title>
        <style type="text/css" media="screen">
            body {
                overflow: hidden;
            }

            #editor, #static { 
                margin: 0;
                position: absolute;
                top: 0;
                bottom: 0;
                left: 0;
                right: 50%;
            }

            #static {
                left: 50%;
                right: 0;
                overflow: auto;
            }
        </style>
    </head>
    <body>
        <pre id="editor"></pre>
        <pre id="static"></pre>
        <script src="ace/build/src/ace.js"></script>
        <script src="ace/build/src/ext-static_highlight.js"></script>
        <script>
            var highlight = ace.require("ace/ext/static_highlight")
            var dom = ace.require("ace/lib/dom")

            var codeEl = document.getElementById("static");
            var editor = ace.edit("editor");
            //editor.session.setMode("ace/mode/html");
            //editor.setTheme("ace/theme/twilight");
            editor.setOptions({
                showPrintMargin: false,
                mode: "ace/mode/html",
                theme: "ace/theme/twilight"
            });
            editor.session.setValue(document.documentElement.outerHTML);
            doHighlight(editor, codeEl);

            editor.session.on("change", function() {
                doHighlight(editor, codeEl);
            });

            function doHighlight(editor, codeEl) {
                codeEl.textContent = editor.session.getValue();
                highlight(codeEl, {
                    // broken, see https://stackoverflow.com/a/31882064/2044940
                    //mode: editor.session.getMode().$id,
                    mode: editor.session.$modeId,
                    theme: editor.getTheme(),
                    startLineNumber: 1,
                    showPrintMargin: false,
                    trim: true
                }, function (highlighted) {
                    var themeStyleId = editor.getTheme().replace("/theme/", "-");
                    var match = document.getElementById(themeStyleId).innerHTML.match(
                        new RegExp(`.${themeStyleId}\\s+\\{[^}]*?background-color:\\s*?([^;,}]+)`)
                    );
                    if (match) {
                        codeEl.style.backgroundColor = match[1];
                    }
                });
            }
        </script>
    </body>
</html>

如果获取主题背景颜色的方法不那么骇人听闻,请告诉我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ace编辑器查找代码段

将ace代码编辑器导入Webpack,ES6,TypeScript项目

ace编辑器未显示某些代码

扩展Ace代码编辑器语言方案

如何在ace编辑器中评估代码

Ace编辑器手动添加代码段

错误的HTML代码编辑器

Ace编辑器和流星,用于协作代码编辑:观察挂起应用程序

VS代码编辑器

带有ace代码编辑器的angularjs-在模型更改时强制编辑器执行“ onblur”

ace编辑器不显示<html>

使用Onsen,如何在NodeJ中编写服务器端代码,这些代码将Jade文件在拆分器中呈现为HTML

如何在Rails的ACE编辑器中测试代码的输出

无法在Ace编辑器中滚动和突出显示代码

我如何使用laravel形式获取Ace代码编辑器的内容

Mozilla附加组件允许Ace编辑器代码验证

使用Ace代码编辑器,我能否使F3的行为与Ctrl + F相同?

如何在ace编辑器中将多行代码设为只读

如何使用koding.com上的Ace编辑器取消缩进代码?

如何在 Cloud9 Ace 代码编辑器中禁用粘贴?

RStudio:将代码移到编辑器中心

HTML Webresource编辑器提交后更改源代码

为ace编辑器设置值,而无需选择整个编辑器

因此,我要创建一个编辑器网站,我想有一个保存按钮,该按钮将只保存写在框中的代码,而不是整个编辑器代码

双击选择的代码编辑器

Linux中的代码编辑器

Intellij 编辑器代码补全

编辑器配置 - 如何对齐代码

检测代码镜像编辑器的焦点