Ace Editor删除我的HTML标签

时间:2015-09-18 20:40:36

标签: javascript html ace-editor

这是我的HTML:

...<div class="myclass"><label>Default</label></div>

我的javascript:

ace.edit(el); // where el is the dom element div.myclass shown above

编辑器正确呈现!

编辑只出现&#34;默认&#34;。没有要编辑的HTML。

当我在chrome上看调试模式下的代码时,我看到编辑函数使用(第18474行)检索元素的值:

value = dom.getInnerText(el);

反过来导致:

return el.textContent;

然后使用(18475):

消隐el innerHTML
el.innerHTML = '';

这对我来说似乎很奇怪。 el.innerHTML正确显示

"<label>Default</label>"

是我还是那里出了什么问题?

如果这是正常行为,如何使用Ace编辑器编辑div的html内容?我错过了什么?

由于

3 个答案:

答案 0 :(得分:0)

在这里找到答案 https://github.com/ajaxorg/ace/issues/519

我会试一试,让你们知道这是否解决了这个问题

你基本上需要

el = document.getElementById(&#34; editor&#34;); text = el.innerHTML editor = ace.edit(el)editor.session.setValue(text)

答案 1 :(得分:0)

Ace使用textContent而不是innerHTML,因为使用innerHTML无法传递任意文本。例如,如果你有'<div class="myclass">' innerHTML将使'<div class="myclass"></div>'<script>alert('haha')</script>显示警告对话框。 你可以使用textarea或xmp标签,不要让浏览器解析文本,但你需要再次转义</textarea。因此,最安全的方法是转义特殊的html字符,如&lt;和&amp;并使用textContent。

答案 2 :(得分:0)

如果您的代码内容具有HTML,请使用Foo作为调用schedule.every().day.at("00:00").do(function_name) 的容器

注意
schedule.every().tuesday.at("18:00").do(function_name) textarea上使用Ace Editor而不是C#

示例

HTML

Javascript

锐化

innerText

javascript

~~innerHtml~~