ExecCommand不解开

时间:2014-01-09 20:09:10

标签: javascript jquery wysiwyg execcommand

使用基于selection / key command WYSIWYG 编辑器。效果很好除了......

使用所有其他键命令,它可以打开和关闭特定样式I,打击等。

使用execCommand('bold'),它不会解开文本。这非常令人沮丧。每个浏览器都是一样的。

这是代码。

$('body').on('keydown', '.element_content, .element_content_subhead', function(e) { 

if(e.ctrlKey){

        //bold -- key 'B'
        if(e.which == 66){
            $sel = $.trim(document.getSelection().toString());
            if($sel == ''){
                alert('Please select some text to bold');
            }
            else{
                document.execCommand('bold', false, null);
            }
        }
       }

});

2 个答案:

答案 0 :(得分:2)

这是我的答案。

因为我使用的是非标准字体(ClanWeb),所以b为粗体的类型对浏览器效果不佳。所以在我的CSS中我有b {font-family:ClanWeb-bold; font-weight:normal!important; }

这适用于粗体化类型,但如果标记行为不正常,则execCommand不会触发;在CSS中没有font-weight:bold。

所以这是我的代码解开它。

  //bold -- key 'B'
    if(e.which == 66){
        $sel = $.trim(document.getSelection().toString());

        var parentEle = window.getSelection().getRangeAt(0).commonAncestorContainer;
        parentEle = parentEle.parentNode;


        if($sel == ''){
            alert('Please select some text to bold');
        }
        else if(parentEle.tagName == 'B'){
            parentEle.id='unbold1'; 
            $('#unbold1').contents().unwrap();
        }
        else{
            document.execCommand('bold', false, null);
        }
    }

答案 1 :(得分:0)

在我的情况下,问题出现在'font:inherit;'引导样式。 摘要:如果您对“unbold”问题有疑问。或者' unitalic'使用 document.execComand 尝试删除所有css样式并检查您的编辑器 - 之后应该可以正常工作。