相关疑难解决方法(0)

有没有办法让execCommand("insertHTML")不删除chrome中的属性?

上下文是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)

有没有办法防止这种情况发生?

javascript contenteditable execcommand

16
推荐指数
1
解决办法
1万
查看次数

允许使用execCommand在contentEditable div中进行Tabbing

我正在创建一个应用程序,我需要一个contentEditable div允许其中有选项卡.我已经发现,实际上不可能正常工作.那么有没有办法在keyDown上添加标签的HTML代码,即

&#09;
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,"&#09;"); 
        //Thought this would work but it doesn't
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人知道是否有办法做到这一点,或者如果那样,我只是做错了,请告诉我!谢谢!

html javascript jquery dom contenteditable

6
推荐指数
1
解决办法
5585
查看次数

禁用焦点内容中的 Tab 键模糊可编辑

我完全知道这个问题看起来像是重复的,但事实并非如此。请阅读。

我有一个div带有属性的标签contentEditable="true"。我正在尝试这样做,以便我可以在div不移动焦点的情况下使用 tab 键。这是我拥有的一些不能完全解决问题的代码:

var tab = function(id){
 if(event.keyCode === 9){
    event.preventDefault();
    document.getElementById(id).innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;";
    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)

javascript contenteditable tabbing

3
推荐指数
1
解决办法
1273
查看次数

标签 统计

contenteditable ×3

javascript ×3

dom ×1

execcommand ×1

html ×1

jquery ×1

tabbing ×1