宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
GmailのHTMLメール編集モードなどで使われているリッチテキストエリアは、HTMLのフォーム部品を使わず、JavaScriptでキーイベントを捕捉して諸々の処理を行うことで実現されている。
実はFirefoxでtextareaなどのフォーム部品でも内部的には同じ事をやっているのだけれども、XULアプリケーションの開発程度までのレベルでは、このあたりの処理はほぼ完全に隠蔽されているので、ユーザも開発者もこの実装の事を意識する必要はない。
でもGmailのような普通のWebページでこれをやられてしまうと、困ったことになる。入力がリッチテキストエリアの中で行われた物なのか、それとも他の部分で行われた物なのか、判別ができないのだ。しかも、サイトによってリッチテキストエリアの実装方法が違うので、それいっこ書いておけばどんなサイトでもきちんとリッチテキストエリアを検出できる!というようなコードを書くことは非常に難しいと考えられる。
Rewind/Fastforward ButtonsのようにXPath式をサイトごとに登録しておけるようにするとか、いくつか方法は考えられるけど、どれも面倒だなあ……
追記。この件、修正できました。
document.getElementById("hoge").contentDocument.designMode="on"
以外でリッチテキストエリアを実現する方法ってありましたっけ?
この問題は前から認識していましたし、Bagelでも再現しますが(http://www.mozilla.org/editor/midasdemo/)、
GMailアカウントが無いためどのような実装なのか検証できず…。
http://lxr.mozilla.org/seamonkey/source/extensions/typeaheadfind/src/nsTypeAheadFind.cpp#2876
ちなみに、旧TypeAheadFindではここで回避されていますよね。
情けないことに全然知りませんでした<designModeという機能
確かに、ちゃんと見てみたら、Gmailもこれを使ってました。
なるほど、こうやって実現してたのか……てっきりAjax IMEばりのバッドノウハウの塊なのかとばかり思ってました。
これなら対処は可能ぽ?
やってみたらあっさりできました。
帰ったら更新します。
うちのmozlessも同じ問題で
Gmail使う人から文句来てたのですが、
ここ参考にして解決できそぅです。
どうもありがとぅ。
の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2006-04-05_richtextarea.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.