Contenteditable, execCommand y forzar el texto recién escritado para ser en negrita
-
28-10-2019 - |
Pregunta
Estoy jugando con contento y ejecutivo, y estoy tratando de hacerlo para que cuando se presione un botón,
Si hay texto seleccionado en el contento, se vuelve en negrita
Si no hay texto seleccionado en el contento, entonces cualquier texto escrito en el contento después de presionar el botón está en negrita
Intenté usar el siguiente comando JavaScript:
document.execCommand('bold', false, null);
Pero desafortunadamente, eso solo causa texto que se selecciona para ser en negrita; Si no se selecciona ningún texto y comienza a escribir después de presionar el botón, el texto se muestra sin volar.
Noté que si presiono CTRL+B en la Contentedable, hace exactamente lo que me gustaría lograr, pero me gustaría lograr esto usando JavaScript (y sin simular un CTRL+B en JavaScript).
Solución
En realidad el document.execCommand()
llamar hace exactamente lo que quiere (puede probar esto llamándolo desde un keydown
Manejador de eventos), y sospecho que es el efecto de cualquier botón o cualquier otra cosa que esté usando para activar el comando ese es el problema.
Otros consejos
La gama JavaScripts puede consultar el texto seleccionado, ver este enlace. Puede usarlo para obtener el texto seleccionado (startnode, endnode, compensación, etc.). Si desea que el nuevo texto sea audaz, simplemente agrégalo en un nuevo creado <p>
que das en negrita en CSS. Pero, esto podría no funcionar en IE ...