[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: inputタグの処理
07/02/06 に Katsumi Yamaoka<yamaoka@xxxxxxx> さんは書きました:
> > inputタグにname属性が存在し、type=textの時、
> > 1.valueに<fooのような文字列が含まれると、入力欄の<以降が表示されない。
> > 2.valueに<foo>のような文字列が含まれると、<foo>が表示されない。
> > 3.valueが&lt;fooの時(<fooで検索)、<fooと表示される。
> > ただし、一度編集すると<fooと表示されるようになる。
> 以下のようにしたものを CVS commit しました。もし問題があれば (メー
> リングリストのみなさんも) ご指摘お願いします。ところで、青田さん
> のお名前のローマ字表記はこれであっていますか?
確認してみました。今のところ1,2は解消し問題なく動いているように思います。
ローマ字表記もあっています。ありがとうございました。
3番の問題はtype=selectでも発生していました。
valueをw3m-form-parse-and-fontifyとw3m-fontifyの二箇所で
decodeしているのが原因のようです。
formの内容を記憶するためにw3m-form-parse-and-fontifyでdecodeするのは
必須なようなので、w3m-decode-entitiesでname属性を持つtype=textまたは
type=selectのinputタグの中を飛ばすパッチを書いてみました。
Index: w3m.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.1249
diff -u -r1.1249 w3m.el
--- w3m.el 5 Feb 2007 23:01:06 -0000 1.1249
+++ w3m.el 6 Feb 2007 07:15:28 -0000
@@ -3679,17 +3679,20 @@
(goto-char (point-min))
(let (start prop value)
(while (re-search-forward w3m-entity-regexp nil t)
- (setq start (match-beginning 0))
- (if reserve-prop
- (setq prop (text-properties-at (match-beginning 0))))
- ;; Note that `w3m-entity-value' breaks `match-data' at the 1st
- ;; time in XEmacs because of the autoloading unicode.elc for
- ;; the `ucs-to-char' function.
- (when (setq value (w3m-entity-value (match-string 1)
- (match-beginning 2)))
- (replace-match value nil t))
- (if (and reserve-prop prop)
- (w3m-add-text-properties start (point) prop))))))
+ (let* ((start (match-beginning 0))
+ (fid (get-text-property start 'w3m-form-field-id)))
+ (unless (and fid
+ (string-match "/type=\\(text\\|select\\)/name=[^/]+/" fid))
+ (if reserve-prop
+ (setq prop (text-properties-at (match-beginning 0))))
+ ;; Note that `w3m-entity-value' breaks `match-data' at the 1st
+ ;; time in XEmacs because of the autoloading unicode.elc for
+ ;; the `ucs-to-char' function.
+ (when (setq value (w3m-entity-value (match-string 1)
+ (match-beginning 2)))
+ (replace-match value nil t))
+ (if (and reserve-prop prop)
+ (w3m-add-text-properties start (point) prop))))))))
(defun w3m-decode-entities-string (str)
"Decode entities in the string STR."