2009年9月4日金曜日

Opera 9 および 10 におけるTEXTAREAのValueプロパティに関するバグ

先のポストにも書いたバグに3日間悩まされ続けている。
バグの症状をまとめてみると……

Opera 9 および 10 で、
  1. あるDOM要素──ここでは仮にWとする──内(たとえばDIV要素内)に、jQueryで$('<textarea></textarea>') などとして作成したTEXTAREA要素を子要素もしくは孫要素などとして関連付ける(appendメソッドなどを使用)。
  2. W要素を空にする──子要素をすべて削除するなり、innerHTMLプロパティに空文字列を代入するなりする。jQuery要素としてのWであれば、emptyメソッドでこれができる。
  3. もう一度、1と同じ手順でTEXTAREAを作成して要素Wに関連付ける。

これでもう、TEXTAREAのvalueプロパティと、実際に表示されているTEXTAREA内のテキストとが、連動しなくなる

こうなると、もう、どんなテキストを入力しても、あるいは既存のテキストをどう編集しようとも、それらがvalueプロパティに反映されないため、JavaScript側からユーザが入力したテキストを取得しようとしても、あくまでもプロパティとしてのvalueの値しか取得できなくなる。

プロパティとしてのvalue──表示されているテキストとの連携を失ったvalueの値──は、もちろんvalueプロパティに対して別の文字列を代入することで変更可能だし、当然jQueryのメソッドでも変更できる。しかしこうしてvalueプロパティの値を変更しても、もう表示には反映されない

これはかなり最悪な状態である。どうしても回避できない! こんな簡単なことなのに、検索でしらべてみても他に同様の症状の報告がない。これはぼくのPCにおいてだけ発生するもの?!

0 件のコメント: