Necesito copiar y pegar algún contenido en mi editor de notas de verano. Pero cuando lo pego, toma el estilo de la página de donde lo copié. Necesito pegarlo como texto sin formato. ¿Hay alguna solución?
onPaste Use la opción onPaste para definir una devolución de llamada que eliminará las etiquetas e insertará manualmente el texto.
$editor.summernote({ onPaste: function (e) { var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text'); e.preventDefault(); document.execCommand('insertText', false, bufferText); } });Crédito: https://github.com/summernote/summernote/issues/303
Resolver problemas de Firefox:
Es posible que todavía tengas problemas con Firefox. Si es así, ajuste document.execCommand en una función de temporizador para retrasar un poco su ejecución:
setTimeout(function(){ document.execCommand( 'insertText', false, bufferText ); }, 10);La posición de las devoluciones de llamada en las opciones se cambia después de v0.7.0
Después de v0.7.0, todas las devoluciones de llamada deben estar envueltas por el objeto de devoluciones de llamada. (fuente)
Esto significa que el código original debe escribirse como
$editor.summernote({ callbacks: { onPaste: function (e) { var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text'); e.preventDefault(); document.execCommand('insertText', false, bufferText); } } });Crédito a Mathieu Castets por señalar esto (así que si esto ayudó, ¡vote a favor de su respuesta!)
TL; DR: aquí hay una demostración funcional
Después de v0.7.0, todas las devoluciones de llamada deben estar envueltas por el objeto de devoluciones de llamada. http://summernote.org/deep-dive/#callbacks
Entonces, si está usando summernote de v0.7.0 o superior, la respuesta de jcuenod ahora podría reescribirse como:
$('.summernote').summernote({ callbacks: { onPaste: function (e) { var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text'); e.preventDefault(); // Firefox fix setTimeout(function () { document.execCommand('insertText', false, bufferText); }, 10); } } });La devolución de llamada onPaste funciona muy bien, pero estaba teniendo problemas con el manejo diferente de los saltos de línea en diferentes navegadores. Así que se me ocurrió la siguiente solución, que usa saltos de línea html:
$(".htmleditor").summernote({ callbacks: { // callback for pasting text only (no formatting) onPaste: function (e) { var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text'); e.preventDefault(); bufferText = bufferText.replace(/\r?\n/g, '<br>'); document.execCommand('insertHtml', false, bufferText); } } });