如何默认使用纯文本制作tinymce paste

Rya*_*yan 99 javascript jquery tinymce

用Google搜索了数千次,没有人提供完整的解决方案,默认情况下如何制作纯文本的Tinymce粘贴,并删除任何格式而不点击"粘贴为文本"按钮.

关于如何实现的任何想法?或者如何自动启用"粘贴为文本"按钮?

谢谢

Pau*_*ida 140

对于tinyMCE 3X或4X,情况有所改变.现在你可以做到这一点,它工作正常.

tinymce.init({
    plugins: "paste",
    paste_as_text: true
});
Run Code Online (Sandbox Code Playgroud)

  • 使用**TinyMCE 4**时的最佳答案. (17认同)
  • 是的,其他方法没有用,但确实如此. (5认同)
  • @Tim这个问题的答案中显示的方法是具体的TinyMCE 3.x. 如果你正在使用TinyMCE 4或更大版本,那么这个答案中的方法就可以了. (2认同)

小智 84

我用这段代码解决了这个问题

tinyMCE.init({
...
plugins : "paste",
paste_text_sticky : true,
setup : function(ed) {
    ed.onInit.add(function(ed) {
      ed.pasteAsPlainText = true;
    });
  }
....
})
Run Code Online (Sandbox Code Playgroud)

  • 对于它的价值,我认为你的解决方案比选择的答案更好. (11认同)
  • 我得到一个javascript错误,`ed`的`onInit`属性未定义.`无法获取未定义或空引用的属性'添加' (8认同)

er-*_*r-v 56

编辑:此解决方案适用于版本3.x,适用于4.x版本,请阅读@Paulo Neves的答案

问题是,粘贴插件会自动重置每个粘贴上的纯文本粘贴.所以我们需要做的就是 - 把它还原.以下代码应该有所帮助.

tinyMCE.init({
...
oninit : "setPlainText",
plugins : "paste"

....
});
Run Code Online (Sandbox Code Playgroud)

setPlainText的定义

 function setPlainText() {
        var ed = tinyMCE.get('elm1');

        ed.pasteAsPlainText = true;  

        //adding handlers crossbrowser
        if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
            ed.onKeyDown.add(function (ed, e) {
                if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
                    ed.pasteAsPlainText = true;
            });
        } else {            
            ed.onPaste.addToTop(function (ed, e) {
                ed.pasteAsPlainText = true;
            });
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以现在它总是很​​明显.

  • 刚试过`.init({plugins:["paste"],paste_as_text:true})`,它就像是TinyMCE 4.1的魅力,不需要额外的功能. (13认同)
  • 在后来的tinymce版本中,添加了一些选项来处理这个问题.配置中的`paste_text_sticky_default:true`和`paste_text_sticky:true`应该可以解决问题.(我正在使用3.5.0.1) (8认同)
  • 很好的答案,虽然我发现我得到了与"ed"定义有关的JS错误.通过删除tinyMCE.get("elm1")行并将ed作为setPlainText方法的第一个参数来解决这个问题很简单:例如"function setPlainText(ed){...". (5认同)

sto*_*roz 35

刚刚遇到这个问题并发现,从TinyMCE 3.4.2开始,您可以简单地:

paste_text_sticky: true,
paste_text_sticky_default: true
Run Code Online (Sandbox Code Playgroud)

......很不错.

  • 当我使用这种方法时,编辑器仍然允许粘贴非纯文本. (3认同)
  • 对于这些配置选项+1,不要忘记将粘贴插件添加到插件数组中! (2认同)

bro*_*s28 6

我认为最简单的方法是这样的:

tinymce.init({
   ...
   paste_as_text: true,
   plugins: "paste",
   ...
});
Run Code Online (Sandbox Code Playgroud)