【问题标题】:How to remove style attributes from tags on SummerNote onPaste?如何从 SummerNote onPaste 上的标签中删除样式属性?
【发布时间】:2017-09-15 10:28:48
【问题描述】:

当用户将html内容粘贴到Summernote文本编辑器时,是否可以删除所有样式属性?

例如:(输入)

 <p style="font-weight:500; color:#000;">Hello World </p>
 <div style="display:block"> I am a Div content </div>

粘贴后的预期输出:

 <p>Hello World </p>
 <div> I am a Div content </div>

我想在 Javascript/Jquery 中实现类似的东西

$('tag').removeAttr("style");

SummerNote 文本编辑器中是否有任何内置选项或功能可以执行此操作?

提前致谢

【问题讨论】:

标签: jquery wysiwyg text-editor rich-text-editor summernote


【解决方案1】:

我终于适应了另一个解决方案(如何粘贴为纯文本:summernote doesn't allow to format pasted text after writing onpaste event

使用上述解决方案成功粘贴纯文本后,只需按照您的建议将文本更改为 html 并删除样式:

$('.summernote').summernote({
  callbacks: {
    onPaste: function (e) {
      var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('text/html');
      e.preventDefault();
      var div = $('<div />');
      div.append(bufferText);
      div.find('*').removeAttr('style');
      setTimeout(function () {
        document.execCommand('insertHtml', false, div.html());
      }, 10);
    }
  }
}

我不知道这个解决方案的浏览器兼容性,我只在 Chrome 上测试过。不过我觉得修改起来没那么难。

【讨论】:

  • 在 FF v77 中也可以正常工作。不应该真正依赖浏览器,只要它是标准的 JS(或事实上的 jQuery)。
猜你喜欢
  • 2013-10-21
  • 2011-07-27
  • 2010-10-20
  • 2012-02-17
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
相关资源
最近更新 更多