Summernote 编辑器中的粘贴事件未触发 - 无法获取粘贴值
Paste event in Summernote editor not firing - can not get paste values
我正在构建一个使用 Summernote 编辑器 (https://summernote.org/) 的应用程序。
效果很好,现在我想处理粘贴事件。想法是我想将内容粘贴为纯文本。此页面中的一些谷歌搜索结果:
.
这导致了我的问题 - 我试图实现它但没有成功。
我的代码:
我在我的 Bootstrap / ASP.NET MVC 应用程序中实现了 Summernote,就像这样(我使用 Summernote 0.8.8):
<div class="form-group mb-3">
@Html.LabelFor(c => c.Content)
<div class="card-body">
<form class="form-horizontal form-bordered">
<div class="form-group row">
<div class="col-sm-12">
<textarea name="Content" id="summernote" class="summernote" data-plugin-summernote data-plugin-options='{ "height": 180, "codemirror": { "theme": "ambiance" } }'>
@Html.Raw(Model.Content)
</textarea>
</div>
</div>
</form>
</div>
我现在尝试添加以下代码:
$('#summernote').summernote({
onPaste: function (e) {
var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
e.preventDefault();
document.execCommand('insertText', false, bufferText);
}
});
但这从来没有命中过。如果我在粘贴函数中创建 console.log()
,它永远不会命中。
然后我尝试按照 Summernote 网站上的文档进行操作,并且:
$('#summernote').on('summernote.paste', function(e) {
var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
e.preventDefault();
document.execCommand('insertText', false, bufferText);
});
完美,现在事件真的触发了。但是所有这些都变得未定义,所以它在 GetData 上失败:
((e.originalEvent || e).clipboardData || window.clipboardData)
所以我得到以下错误:
Uncaught TypeError: Cannot read property 'getData' of undefined
at HTMLTextAreaElement.<anonymous> (UpdateCommunication?communicationId=65925cb9-4300-439c-8f96-e00de78e1727:291)
at HTMLTextAreaElement.dispatch (jquery-1.10.2.js:5109)
at HTMLTextAreaElement.elemData.handle (jquery-1.10.2.js:4780)
at Object.trigger (jquery-1.10.2.js:5021)
at HTMLTextAreaElement.<anonymous> (jquery-1.10.2.js:5705)
at Function.each (jquery-1.10.2.js:671)
at init.each (jquery-1.10.2.js:280)
at init.trigger (jquery-1.10.2.js:5704)
at Context.triggerEvent (summernote-bs4.js:1707)
at HTMLDivElement.<anonymous> (summernote-bs4.js:4422)
所以我遇到的问题是 Whosebug 上建议的解决方案对我来说从来没有触发过 - 回调从来没有命中。如果我按照 summernote.paste function
、https://summernote.org/deep-dive/#onpaste,粘贴值似乎未定义!
你很幸运,我今晚有机会玩这个:)
似乎 summernote.paste 事件返回了 2 个参数
而不是
$('#summernote').on('summernote.paste', function(e) {
使用
$('#summernote').on('summernote.paste', function(e, ne) {
并在 fn 正文中使用 'ne' 而不是 'e'
在这里找到了解决方案:
https://github.com/summernote/summernote/issues/303#issuecomment-229823549
我正在构建一个使用 Summernote 编辑器 (https://summernote.org/) 的应用程序。
效果很好,现在我想处理粘贴事件。想法是我想将内容粘贴为纯文本。此页面中的一些谷歌搜索结果:
这导致了我的问题 - 我试图实现它但没有成功。
我的代码:
我在我的 Bootstrap / ASP.NET MVC 应用程序中实现了 Summernote,就像这样(我使用 Summernote 0.8.8):
<div class="form-group mb-3">
@Html.LabelFor(c => c.Content)
<div class="card-body">
<form class="form-horizontal form-bordered">
<div class="form-group row">
<div class="col-sm-12">
<textarea name="Content" id="summernote" class="summernote" data-plugin-summernote data-plugin-options='{ "height": 180, "codemirror": { "theme": "ambiance" } }'>
@Html.Raw(Model.Content)
</textarea>
</div>
</div>
</form>
</div>
我现在尝试添加以下代码:
$('#summernote').summernote({
onPaste: function (e) {
var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
e.preventDefault();
document.execCommand('insertText', false, bufferText);
}
});
但这从来没有命中过。如果我在粘贴函数中创建 console.log()
,它永远不会命中。
然后我尝试按照 Summernote 网站上的文档进行操作,并且:
$('#summernote').on('summernote.paste', function(e) {
var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
e.preventDefault();
document.execCommand('insertText', false, bufferText);
});
完美,现在事件真的触发了。但是所有这些都变得未定义,所以它在 GetData 上失败:
((e.originalEvent || e).clipboardData || window.clipboardData)
所以我得到以下错误:
Uncaught TypeError: Cannot read property 'getData' of undefined
at HTMLTextAreaElement.<anonymous> (UpdateCommunication?communicationId=65925cb9-4300-439c-8f96-e00de78e1727:291)
at HTMLTextAreaElement.dispatch (jquery-1.10.2.js:5109)
at HTMLTextAreaElement.elemData.handle (jquery-1.10.2.js:4780)
at Object.trigger (jquery-1.10.2.js:5021)
at HTMLTextAreaElement.<anonymous> (jquery-1.10.2.js:5705)
at Function.each (jquery-1.10.2.js:671)
at init.each (jquery-1.10.2.js:280)
at init.trigger (jquery-1.10.2.js:5704)
at Context.triggerEvent (summernote-bs4.js:1707)
at HTMLDivElement.<anonymous> (summernote-bs4.js:4422)
所以我遇到的问题是 Whosebug 上建议的解决方案对我来说从来没有触发过 - 回调从来没有命中。如果我按照 summernote.paste function
、https://summernote.org/deep-dive/#onpaste,粘贴值似乎未定义!
你很幸运,我今晚有机会玩这个:)
似乎 summernote.paste 事件返回了 2 个参数
而不是
$('#summernote').on('summernote.paste', function(e) {
使用
$('#summernote').on('summernote.paste', function(e, ne) {
并在 fn 正文中使用 'ne' 而不是 'e'
在这里找到了解决方案: https://github.com/summernote/summernote/issues/303#issuecomment-229823549