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

本文介绍如何使用Ace编辑器构建一个网页,左侧预览静态HTML内容,右侧通过ACE实时编辑并同步高亮显示。通过doHighlight函数实现主题背景颜色的动态获取,使得代码编辑体验流畅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“用户”指出我在正确的方向。我砍死在一起的东西,使用ACE构建对我的作品:左边https://github.com/ajaxorg/ace-builds/

pfN5W.png

定期ACE编辑器,静态HTML强调的右侧。 最初,页面源用作内容,但可以在编辑器中更改,右侧面板即时重新渲染。

ACE Static Highlighter

body {

overflow: hidden;

}

#editor, #static {

margin: 0;

position: absolute;

top: 0;

bottom: 0;

left: 0;

right: 50%;

}

#static {

left: 50%;

right: 0;

overflow: auto;

}

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];

}

});

}

如果有一个不太危险的方式来获得主题的背景颜色,请让我知道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值