¿Es posible insertar HTML sin formato en un Quill? He estado buscando en la documentación pero no pude encontrar nada.
Si no es posible, ¿puedo al menos convertir HTML en un Quill Delta?
La razón por la que necesito esto es porque estoy capturando el HTML sin procesar del texto tomado de Quill, para poder verlo más tarde en estilo HTML. ¿He estado haciendo todo mal y también necesito mantener una versión Delta?
En la versión 1.3.6, puede usar Quill.setContents(value)
método.
E inserte su nuevo HTML así:
const value = `<h1>New content here</h1>`
const delta = quill.clipboard.convert(value)
quill.setContents(delta, 'silent')
Documentación de la pluma: https://quilljs.com/docs/api/#setcontents
-
Te refieres a 1.3.6. Gracias de cualquier manera.
– Bronzato
19 de mayo de 2020 a las 8:02
-
convert()
no está documentado en quilljs.com/docs/modules/portapapeles DeberíadangerouslyPasteHTML
ser usado en su lugar?– Mario
11 de agosto de 2022 a las 17:34
-
Esta es una solución integral mucho mejor que establecer
quill.root.innerHTML
. Cuando no lo convierte a un delta, el texto interno se corromperá si hay caracteres especiales para una cosa.– español-matemáticas
6 de diciembre de 2022 a las 13:37
-
También si está usando quill 2.0
quill.clipboard.convert
el parámetro se desestructura como{html, text}
entonces en este ejemplo necesitarías usarquill.clipboard.convert({html: value})
o el resultado será un delta vacío.– español-matemáticas
6 de diciembre de 2022 a las 13:41
He encontrado una manera, mirando muy de cerca la documentación. Método quill.clipboard.dangerouslyPasteHTML('raw html');
Hace el truco. https://quilljs.com/docs/modules/clipboard/#dangerouslypastehtml
-
Gracias, esto funcionó para mí. Configurando directamente el innerHTML o
.html()
with jQuery estaba causando que el editor Quill volviera a formatear y cambiara parte del HTML que estábamos pasando. Este método funcionó para nosotros.– neilsimp1
23 de abril de 2019 a las 14:20
Otra forma de insertar HTML en Quill es usando JavaScript estándar.
Puede configurar su html en una variable, como htmlToInsert
.
Luego apunta a la contenteditable
div creado por Quill, al obtenerlo por su clase, ql-editor
.
Finalmente, establezca el innerHTML
de ese div al HTML que desea insertar.
Por ejemplo:
var htmlToInsert = "<p>here is some <strong>awesome</strong> text</p>"
var editor = document.getElementsByClassName('ql-editor')
editor[0].innerHTML = htmlToInsert
Hay una mejor manera de hacer esto:
const htmlMurkup = '<p>Good</p>'
let quill = new Quill()
quill.container.firstChild.innerHTML = htmlMurkup
Creo que la forma más directa es esta:
quill.root.innerHTML = '<p>HTML Goes Here</p>'
También puede obtener el HTML de esta propiedad.
José Ajibodu
Si no está obteniendo el resultado deseado. Podría deberse a que su contenido html está codificado.
Usa esto para convertirlo.
let realHTML = $('<textarea />').html("<p><strong>Hello</strong></p><p><br></p>").text();
console.log(realHTML);
Este código generará
<p><strong>Hello</strong></p>
Después de esto, puede usar este comando para configurar el contenido html en el editor Quill
quill.root.innerHTML = realHTML;
o incluso esto:
let initialContent = quill.clipboard.convert(realHTML);
quill.setContents(initialContent, 'silent');
Es correcto que su html esté en el formato html real antes de establecer el valor en la pluma. De lo contrario, las etiquetas html se mostrarían verbalmente.
Kwame Opare Asiedu
Solo para agregar a la respuesta de @ user1993629, usando quill.clipboard.dangerouslyPasteHtml(0, "raw html")
colocará el cursor al final del contenido pegado