上下文是Chrome 37.0.2062.120 m.
我正在使用execCommand将html插入到可编辑的div中.我的execCommand调用如下所示:
function insertHTML(){
document.execCommand('insertHTML', false, '<span id="myId">hi</span>');
}
Run Code Online (Sandbox Code Playgroud)
当可编辑的div看起来像这样:
<div contenteditable="true">
some [insertion point] content
</div>
Run Code Online (Sandbox Code Playgroud)
我使用execCommand将html插入一个contenteditable div,HTML的所有属性都按预期插入,我最终得到这个:
<div contenteditable="true">
some <span id="myId">hi</span> content
</div>
Run Code Online (Sandbox Code Playgroud)
但是,当我在此结构中插入完全相同的html时:
<div contenteditable="true">
some content
<div>more [insertion point] content</div>
</div>
Run Code Online (Sandbox Code Playgroud)
从插入的跨度中删除属性,它最终看起来像这样:
<div contenteditable="true">
some content
<div>more <span style="font-size: 10pt;">hi</span> content</div>
</div>
Run Code Online (Sandbox Code Playgroud)
有没有办法防止这种情况发生?
我正在创建一个应用程序,我需要一个contentEditable div允许其中有选项卡.我已经发现,实际上不可能正常工作.那么有没有办法在keyDown上添加标签的HTML代码,即
	
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有这个
document.getElementById('codeline').contentEditable='true';
document.getElementById('codeline').onkeydown=function(e){
if(e.keyCode==9){
e.preventDefault();
//document.getElementById('codeline').contentWindow.document.execCommand("InsertHTML",false,"	");
//Thought this would work but it doesn't
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人知道是否有办法做到这一点,或者如果那样,我只是做错了,请告诉我!谢谢!
我完全知道这个问题看起来像是重复的,但事实并非如此。请阅读。
我有一个div带有属性的标签contentEditable="true"。我正在尝试这样做,以便我可以在div不移动焦点的情况下使用 tab 键。这是我拥有的一些不能完全解决问题的代码:
var tab = function(id){
if(event.keyCode === 9){
event.preventDefault();
document.getElementById(id).innerHTML += " ";
setCaretPos(id);
}
}
var setCaretPos = function(id){
var node = document.getElementById(id);
node.focus();
var textNode = node.firstChild;
var caret = textNode.length;
var range = document.createRange();
range.setStart(textNode, caret);
range.setEnd(textNode, caret);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
Run Code Online (Sandbox Code Playgroud)
这基本上只是在 div 内文本值的末尾添加四个空格,然后将插入符号移动到末尾。当我在其他行上使用制表符时,这会成为一个问题,因为它只会将制表符添加到末尾(如果我不在最后一行)。
所以,我想插入插入符号所在的四个空格。这就是麻烦的地方。我会展示代码,但我不确定我做错了什么。我希望它在插入符号之前的文本中添加四个空格,然后在插入符号之后添加所有文本。这是代码:
var insertTabAtCaret = function(id){
if(event.keyCode === 9){
event.preventDefault();
var box = document.getElementById(id);
if(box.selectionStart || box.selectionStart == "0"){
var startPos = …Run Code Online (Sandbox Code Playgroud)