FCKeditorと格闘(2)
ATOK発動時にEnterキーの挙動がおかしいの原因は、結局のところ、EnterKeyを処理しているのがやはりkeydownであって、keypress ではなかったことが原因の模様。
というわけで、修正する方法も分かったのだけれど、LGPLなので修正済みコードは同梱しません。
このエントリーだけLGPLにしてしまって(?)、修正方法候補をさらしてみます。
fckeditor/editor/js/fckeditorcode_gecko.js で _FCKKeystrokeHandler_OnKeyDown を検索して以下の2つのイベントハンドラーコードを探す(連結して縮められたJSなので非常に見難い。縮める前のJSを直しても意味がないので注意)。
function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var ...(略)... function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if ...(略)...
名前を変更。
function _FCKKeystrokeHandler_OnKeyDown_original(A,B){var C=A.keyCode||A.which;var ...(略)... function _FCKKeystrokeHandler_OnKeyPress_original(A,B){if (B._CancelIt){if ...(略)...
修正用のイベントハンドラーコードを直後に追加。OnKeyPress で OnKeyDown を肩代わりする。
function _FCKKeystrokeHandler_OnKeyDown(A,B){ if(FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac && A.keyCode == 13 ){ // skipped } else{ _FCKKeystrokeHandler_OnKeyDown_original(A,B) } } function _FCKKeystrokeHandler_OnKeyPress(A,B){ if(FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac && A.keyCode == 13 ){ _FCKKeystrokeHandler_OnKeyDown_original(A,B) } else{ _FCKKeystrokeHandler_OnKeyPress_original(A,B) } }
影響がどれぐらいか分からないのだけれど、とりあえず自分が使う分には、これで快適になりました。
http://spreadsheets.google.com/pub?key=pfont1YYqi4iF0_IrMP_kTA を見る限りは肩代わりによるfixで良さそうな気はする。
本来なら、ATOKがOnかOffかでKeyPress/KeyDownをちゃんと区別したいんだけれど。
で、これ、開発にFeedbackしておこうと思うんだけれども、これはどちらかというと、Firefoxのバグのような気がしないでもない。どうしたらいいんでしょうかね。