ContentEdible, Execcomm e costringendo il testo appena tipizzato a essere in grassetto
-
28-10-2019 - |
Domanda
Sto prendendo in giro con contenuti e esecuzione, e sto cercando di farlo in modo che quando viene premuto un pulsante,
Se c'è un testo selezionato nel content di HEDEDIBILE, diventa in grassetto
Se non è stato selezionato alcun testo nel content di HEDEDIBILE, allora qualsiasi testo digitato nel contenuto dopo aver premuto il pulsante è in grassetto
Ho provato a usare il seguente comando JavaScript:
document.execCommand('bold', false, null);
Ma sfortunatamente, ciò provoca solo il testo selezionato per diventare in grassetto; Se non viene selezionato alcun testo e si inizia a digitare dopo aver premuto il pulsante, il testo viene visualizzato.
Ho notato che se premo CTRL+B nel content di The ContentEdible, fa esattamente quello che vorrei realizzare, ma mi piacerebbe farlo usando JavaScript (e senza simulare un Ctrl+B in JavaScript).
Soluzione
In realtà il document.execCommand()
la chiamata fa esattamente quello che vuoi (puoi dimostrarlo chiamandolo da a keydown
gestore di eventi), e sospetto che sia l'effetto di qualunque pulsante o qualsiasi altra cosa tu possa usare per attivare il comando che è il problema.
Altri suggerimenti
La gamma JavaScripts può controllare il testo selezionato, vedi questo link. È possibile utilizzarlo per ottenere il testo selezionato (startNode, endnode, offset ecc.). Se vuoi che il nuovo testo sia audace, aggiungilo in un nuovo creato <p>
che dai audaci in CSS. Ma questo potrebbe non funzionare in IE ...