所以我正在尝试构建一个代码编辑器,在iframe中显示html的输出。但是有一些麻烦。我之前使用过codemirror我正在使用ACE,但这里出现了问题,因为它一直显示我" xxxxxx"和数字。使用它的正确方法是什么?
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js"></script>
<style>
#jsEditor{height:300px;}
</style>
</head>
<body>
<div id="jsEditor"></div>
<iframe id="frame"></iframe>
<button onclick="refresh()">Click</button>
<script type="text/javascript">
var e=ace.edit("jsEditor");
e.getSession().setMode("ace/mode/html");
e.setTheme("ace/theme/xcode");
e.getSession().setTabSize(2);
e.renderer.setShowGutter(false);
function refresh(){
var textval=document.getElementById('jsEditor').textContent;
document.getElementById('frame').srcdoc=textval;
}
</script>
</body>
</html>
[这是我得到的输出] [2]
答案 0 :(得分:0)
Ace渲染仅显示文本的可见部分,并添加一些与任何文本不对应的节点。
因此,您需要调用编辑器的document.getElementById('jsEditor').textContent
方法而不是getValue()
。在您的示例中,将textContent更改为
var textval=e.getValue();