この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2007年5月)

2007年5月23日

Bug 4223 ime-modeプロパティの実装
初回投稿日時: 2007年05月23日17時58分06秒
最終更新日時: 2007年07月22日14時35分09秒
カテゴリ: CSS Mozilla Core
SNS: (list)

ようやく実装完了。Geckoにおけるime-modeの仕様は以下の通り。

'ime-mode'
値:  auto | normal | disabled | active | inactive | inherit
初期値:  auto
適用対象:  テキストを編集可能な要素
継承:  しない
パーセント値:  N/A
メディア:  interactive
算出値:  指定値

IEとの違いを説明を列挙すると、

input[type=password]にも適用可能

IEではパスワードエディタには適用されないが、Geckoでは適用可能。

normal値の追加

IMEの状態を通常の状態、つまり全ての機能が使える状態にする。この値を利用すれば、ime-mode: disabled;の指定されたエディタであってもユーザスタイルシートで強制的にIMEを利用可能とすることができる。

また、パスワードエディタであってもこれを利用することでIMEを利用可能とする。

disabled値はIMEの無効化ではなく、パスワードエディタと同様の挙動とする

MacではIMEの無効状態とパスワード入力欄での状態とは異なる。Macでの不整合を防止するために、disabled値はパスワード入力欄の標準的な挙動に割り当てられる。

つまり、Macでは非Romanのキーボードレイアウトが選択できなくなる。WindowsやLinuxではこれらの区別はないため、IMEのみが単純に無効化されると考えて問題無い。

継承しない

MSDNのドキュメントによると継承するとなっているが、IE6/IE7で挙動を確認したところ、継承しない。GeckoはIEの挙動にあわせて実装している。

他にもいくつか注意点。

まず、Linuxではactiveinactive値はnormal値と同じ挙動となる。これはプラットフォームの持つAPIの制限によるもの。

Macではime-mode: disabled;のエディタがフォーカスを取得するとキーボードレイアウトがRomanのものに切り替えられるが、このエディタがフォーカスを失う際に元の状態への復元は行われない。これはCocoaのパスワードエディタの標準的な挙動であるが、他のプラットフォームの挙動とは異なっている。つまり、ime-mode: disabled;の使用はMacユーザには非常に嫌われることが予想される。

もちろん、このプロパティを一般的なWebページで使うことは推奨されない。このプロパティはイントラネットのアプリケーション等、ユーザがそのフォームの仕様を熟知している場合を除き、使用されるべきではない。ユーザは一般的にIMEの状態(ON/OFF)を記憶しており、その状態を逐次確認しながら利用することはないと思われる。そのため、ユーザの記憶と実際の状態に齟齬が発生する可能性のあるactiveinactive利用は慎重に行われるべきである。

また、メールアドレスの入力欄等、ASCII文字しか使えないエディタでのIMEの無効化も推奨されない。ユーザによってはメールアドレス等をIMEの辞書に保存し、利用している可能性があるためである。このような利用方法をとっているユーザにとっては「余計なおせっかい」でしかない。

Webページの作者はこのプロパティをフィルタに使えるものと考えてはいけない。Geckoは貼り付け(ペースト)を利用することで、IMEを利用しなくてはいけない文字であってもIMEが無効なエディタに入力可能である。

関連するかもしれないエントリ

bug 4223を含むエントリ