这是我的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 innerHTMLel.innerHTML = '';
这对我来说似乎很奇怪。 el.innerHTML正确显示
"<label>Default</label>"
是我还是那里出了什么问题?
如果这是正常行为,如何使用Ace编辑器编辑div的html内容?我错过了什么?
由于
答案 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~~