1

使用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);
            }
        }
       }

});
4

2 回答 2

2

这是我的答案。

因为我使用的是非标准字体(ClanWeb),所以加粗字体的 b 不适用于浏览器。所以在我的 CSS 中,我有 b{ font-family:ClanWeb-bold; 字体重量:正常!重要;}

这对于加粗类型效果很好,但是如果标签的行为不正常,则 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);
        }
    }
于 2014-01-10T04:45:45.463 回答
0

就我而言,问题出在“字体:继承;” 引导样式。摘要:如果您在使用document.execComand时遇到“unbold”或“unitalic”问题,请尝试删除所有 css 样式并检查您的编辑器 - 之后它应该可以正常工作。

于 2016-07-22T09:25:22.020 回答