在撰写onpaste事件

时间:2015-11-19 09:31:24

标签: javascript summernote

我的问题是,当我在summernote中粘贴数据时会清除格式,但是如果我想格式化我想要的粘贴文本,它不允许我在粘贴文本或文本即时文字中进行更改在编辑。 我已经使用此代码将onpaste事件绑定到summernote。

我正在使用summernote.js版本0.5.8

    $(".summernote").summernote({
            onpaste: function (e) {
            debugger;
            var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
            e.preventDefault();
            setTimeout(function () {
                document.execCommand('insertHTML', false, bufferText);
            }, 10);
        }
    })

2 个答案:

答案 0 :(得分:2)

在html文件中使用on-paste属性

<div summernote="rules" ng-model="league.rules" validate-summernote="checkLeagueRules" config="summernote_options" on-paste="removeFormatting(evt)" class="summernote"></div>

在控制器中使用removeFormatting函数

$scope.removeFormatting = function(e)
{ 
    var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
    e.preventDefault();
    // Firefox fix
    setTimeout(function () {            
        document.execCommand('insertText', false, bufferText);
    }, 10);  
}

答案 1 :(得分:0)

解决了我的问题。我不得不销毁Summernote的对象并重新初始化它。我不确定它是否是一种正确的编码方式,但它对我有用。 我在布局页面上这样做,因为我在项目中使用Summernote各种不同的地方

    $(".summernote").summernote({ height: 250 });

        $(".summernote").summernote({
            onpaste: function (e) {
                var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
                e.preventDefault();
                setTimeout(function () {
                    document.execCommand('insertText', false, bufferText);
                    $(this).parent().siblings('.summernote').destroy();                        
                }, 10);
            }
        });