potappo's blog

日々の雑感などを書くブログ。

Document.queryCommandSupported() を翻訳しました

このエントリは MDNやFirefox OSのドキュメントをみんなで翻訳! Advent Calendar 2015 の 12 日目 です。

Document.queryCommandSupported()は、Document.execCommand()で指定できるコマンドがそのブラウザで利用可能かどうかを調べるためのコマンドです。true か false を返すだけの単純なメソッドですが、関連メソッドが多く、翻訳前の英語版も関連メソッドの記述が混ざった状態になっていたので、ここで整理しておきます。

まず、Document.execCommand() が大元のメソッドです。様々なエディタコマンドがありますが、例えば、copy コマンド、paste コマンドを使うことで、ブラウザ単体でコピペ操作が可能となります。
これまで Firefox などでスクリプトでコピペ操作を行うには、Flash の利用が必要でした。個人的にはこれが今年の Firefox で一番画期的な実装です。

今回訳した Document.queryCommandSupported() メソッドを使うことで、エディタコマンドが利用可能であるかのチェックができます。Firefox では、paste コマンドに限り、実行するための権限が不足している場合も false を返します。コピペ操作のコマンドはセキュリティも絡むので、今後、実装が変わる可能性があります。各ブラウザの最新の仕様を確認してください。

また、Document.queryCommandEnabled()メソッドというものもあり、こちらは、cut および copy コマンドで、ユーザが起動したものでない場合、機能として利用可能であっても、false を返すという仕様になっています。queryCommandSupported メソッドが実装だけで判別するのに対して、queryCommandEnabled メソッドは、呼び出しコンテキストを含めた判別を行います。

他にも、queryCommandValue というメソッドがあります(MDN にはまだドキュメントがありません)。このメソッドでは、コマンドによっては、コマンドの実行値を戻り値として受け取れます。他にもまだありますが、Mozilla では、Midas というリッチテキストエディタに関するプロジェクトがあり、詳しくはそちらを参照してください。

標準仕様としては、Editing Taskforce の HTML Editing API になるかと思います。