Question

Je suis rigoler avec contentEditable et execCommand, et je suis en train de faire en sorte que quand un bouton est pressé,

  • S'il y a du texte sélectionné dans le contentEditable, il devient en gras

  • S'il n'y a pas de texte sélectionné dans le contentEditable, alors tout texte tapé dans la contentEditable après avoir appuyé sur le bouton est mis en gras

J'ai essayé d'utiliser la commande Javascript suivant:

 document.execCommand('bold', false, null);

Mais malheureusement, qui fait que le texte qui est sélectionné pour devenir gras; si aucun texte est sélectionné et vous commencez à taper après avoir appuyé sur le bouton, le texte apparaît unbolded.

Je remarque que si j'appuyez sur Ctrl + B dans le contentEditable, il fait exactement ce que je voudrais accomplir, mais je voudrais y arriver en utilisant Javascript (et sans simuler un Ctrl + B en Javascript).

Était-ce utile?

La solution

En fait, l'appel document.execCommand() fait exactement ce que vous voulez (vous pouvez le prouver en l'appelant à partir d'un gestionnaire d'événements keydown), et je pense qu'il est l'effet de tout bouton ou tout ce que vous pouvez utiliser pour déclencher la commande qui est le problème .

Autres conseils

Javascripts Range peut consulter le texte sélectionné, consultez ce lien . Vous pouvez l'utiliser pour obtenir le texte sélectionné (startnode, nœud terminal, offset, etc.). Si vous voulez un nouveau texte à faire preuve d'audace, il suffit d'ajouter dans une nouvelle <p> créé que vous donnez gras dans css. Mais, cela pourrait ne pas fonctionner dans IE ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top