web-dev-qa-db-fra.com

Javascript: document.execCommande cross-browser?

Je suis juste tombé sur un morceau de code que je n'avais jamais vu auparavant:

document.execCommand('Copy');

qui semble copier le contenu du presse-papiers dans l'élément mis au point.

Cette fonctionnalité est-elle disponible sur plusieurs navigateurs?


J'ai trouvé ne page qui montre une matrice de compatibilité pour document.execCommand.

63
jldupont

C'est pour le "mode de conception" où le navigateur transforme efficacement le document en éditeur. L'API execCommand a commencé avec IE et a été plus tard ajouté à HTML5. Exactement quelles commandes sont prises en charge, ainsi que leur comportement varie selon les navigateurs. L'accès au presse-papiers est considéré comme une sécurité risque.

27
peller

Oui, je l'ai utilisé dans IE, Chrome, Safari. Si cela fonctionne pour ces navigateurs, cela devrait fonctionner pour le reste. Quoi qu'il en soit, la méthode execCommand de l'objet document est utilisée pour exécuter des commandes relatives aux fonctionnalités intégrées d'édition de texte enrichi dans le navigateur. La syntaxe de execCommand est la suivante: document.execCommand(command, uiBool, argument)

Le paramètre de commande est la commande à exécuter - gras, souligné, police, etc.

Vous avez ensuite le uiBool qui est la valeur booléenne qui spécifie si l'interface utilisateur par défaut doit être affichée ou non.

Et le dernier paramètre est l'argument utilisé pour certaines commandes qui nécessite que nous passions un argument. Si aucun argument n'est requis par la commande, nous passons une valeur de null comme troisième paramètre.

Exemple:

document.getElementById("whateverID").document.execCommand('bold', false, null);

ou:

document.getElementById("whateverID").document.execCommand('bold', false, <a variable nae>);
4
user3798995

Mise à jour: Eh bien, document.execCommand est documenté dans la documentation Mozilla DOM , mais sa description y est légèrement différente de la documentation MSDN.

Je suis toujours sûr que ce n'est pas dans la norme ECMA-262.

3
Daniel Pryden