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

Re: inputタグの処理



>>>>> In [emacs-w3m : No.09185] 青田直大さん wrote:

> 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と表示されるようになる。

お知らせありがとうございます。Google 検索オプションのページで確
認しました。

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

> valueの先頭に<があると、入力欄を変更できなくなり困るので、
> とりあえず入力欄が動作するようになるパッチを添付します。

> このパッチには1の場合に、入力欄の後に</pre_int>と表示される問題があります。

以下のようにしたものを CVS commit しました。もし問題があれば (メー
リングリストのみなさんも) ご指摘お願いします。ところで、青田さん
のお名前のローマ字表記はこれであっていますか?

2007-02-05  Naohiro Aota  <nao.aota@xxxxxxxxx>

	* w3m.el (w3m-fontify): Don't delete things like tags in forms of
	type=text as well as of type=textarea.

--- w3m.el~	2007-02-05 05:37:02 +0000
+++ w3m.el	2007-02-05 22:50:24 +0000
@@ -3748,9 +3748,11 @@
     ;; Remove other markups.
     (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))
-	  (delete-region (match-beginning 0) (match-end 0)))))
+      (let* ((start (match-beginning 0))
+	     (fid (get-text-property start 'w3m-form-field-id)))
+	(if (and fid (string-match "/type=text\\(?:area\\)?/" fid))
+	    (goto-char (1+ start))
+	  (delete-region start (match-end 0)))))
     ;; Decode escaped characters (entities).
     (w3m-decode-entities 'reserve-prop)
     (when w3m-use-form