この問題は今日私に来ました。私は多くのJSPを使用するWebベース(Struts 2)プロジェクトで作業しており、ほとんどのinput, select, table
要素は属性a
のみで定義されており、次のように設定されていません。name
id
<input name="myname" class="myclass" value="" type="text"/>
残念ながら、これらのフィールドには多くのjavascript検証があり、それらのほとんどを残す前にコードを読むことができる限り、実際には。を含む要素を参照していることを除いて、これまでのところ良好document.getElementById
です。
ここでの落とし穴は、これがIE-6およびIE-7とのみ互換性のある古いアプリケーション(実際にはそれほど古いものではない)であるということです(IEが実際に要素を見つけるのはname
属性が、私はそれが何かをしなければならないと思います)。他のすべてのブラウザが文句を言ったり泣いたりするのは当然のことです。
そこで、私は簡単な解決策を考え出そうとしています。HTMLを修正するためではなく、属性input, select, table
をa
持つ要素を定義するすべてのJSPを検索します。name
id
私の古き良き友人http://rubular.comを使用して、私は次のことを思いついた:
/<(?:(input|select|a|table))\s+((?!id).)*>
これにより、参照されているすべての要素が。なしでキャッチされますid
。name
しかし、実際に一致するものだけを主張するにはどうすればよいですか?
ああ、もう一つの重要なポイント。要素の定義は1行であるため、次のようなものがない可能性が最も高くなります。
<input name="..."
class="..."/>