[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

inputタグの処理



青田と申します。

Googleで検索をしていた時に動作がおかしい所を見つけました。

環境
w3m version w3m/0.5.1+cvs-1.969
emacs-w3m-version "1.4.162"
GNU Emacs 22.0.92.1 (arm-sharp-linux-gnu, X toolkit) of 2007-01-15 on zaurus

inputタグにname属性が存在し、type=textの時、
1.valueに<fooのような文字列が含まれると、入力欄の<以降が表示されない。
2.valueに<foo>のような文字列が含まれると、<foo>が表示されない。
3.valueが&amp;lt;fooの時(&lt;fooで検索)、<fooと表示される。
  ただし、一度編集すると&lt;fooと表示されるようになる。

name属性が存在しないinputタグでは、これらの現象が起こらないので、
原因はw3m-form.elのw3m-form-replace、w3m-form-resumeあたりにあるのでしょうか?

valueの先頭に<があると、入力欄を変更できなくなり困るので、
とりあえず入力欄が動作するようになるパッチを添付します。
このパッチには1の場合に、入力欄の後に</pre_int>と表示される問題があります。

Index: w3m.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.1248
diff -u -r1.1248 w3m.el
--- w3m.el	5 Feb 2007 05:37:02 -0000	1.1248
+++ w3m.el	5 Feb 2007 17:30:53 -0000
@@ -3749,7 +3749,8 @@
     (goto-char (point-min))
     (while (re-search-forward "</?[A-Za-z_][^>]*>" nil t)
       (let ((fid (get-text-property (match-beginning 0) 'w3m-form-field-id)))
-	(unless (and fid (string-match "/type=textarea/" fid))
+	(unless (and fid (or (string-match "/type=textarea/" fid)
+			     (string-match "/type=text/" fid)))
 	  (delete-region (match-beginning 0) (match-end 0)))))
     ;; Decode escaped characters (entities).
     (w3m-decode-entities 'reserve-prop)