3

私は現在、バージョン 6 までの IE を含むすべてのブラウザーと互換性がなければならない Web サイトを作成しています。

特にこれら 2 つのイベントの互換性の問題について疑問に思っていまし<input>type='text'

  • OnBlur
  • 変更時

検索すると、さまざまな回答と不完全なリストが見つかりました。

具体的には、質問は次のとおりです。

  • 上記の 2 つのイベントに関する既知の問題はありますか (他の HTML イベントに拡張される可能性があります)?
  • もしそうなら、これらの問題を回避するためにどのような方法を使用できますか?

どんな助けでも大歓迎です:)

4

3 に答える 3

9

これらのイベントをテキスト ボックスでのみ使用する場合は、すべてのブラウザーがこれらのイベントを適切にサポートする必要があります。QuirksMode イベントの互換性テーブル を確認すると、IE のラジオ ボタンとチェック ボックスの変更イベントに問題があることがわかります。

ブラウザーの JavaScript イベントにあまり詳しくない場合は、IE が標準とは異なることを行うことにしたため、イベント モデルが混乱していることに気付くでしょう。この問題を克服するには、 jQueryYUIDojoMooToolsExtJS、またはClosureなどの JavaScript フレームワークを使用する必要があります。これらのフレームワークは違いを滑らかにするので、異なるブラウザーの違いやバグに (ほとんど) 対処する必要はありません。CodingHorrorに関する素晴らしい記事がありますJavaScript フレームワークを使用する理由に興味がある場合は、サイトで JavaScript を使用する予定がある場合に、JavaScript フレームワークの使用を検討する必要がある理由を説明します。

また、ブラウザ イベントにまったく慣れていない場合は、 onchange と onblur の違いを理解していることを確認してください。

于 2009-10-07T03:56:47.860 に答える
1

これら 2 つの特定のイベントには、Internet Explorer のすべてのイベントに加えて、このような通常の奇妙な動作よりも大きな問題はないと考えています。

イベント処理や他の多くの問題に対する一般的な解決策は、開発者が自分の血を流してあなたを救うJavascript フレームワークを使用することです。そのページでDojoの人々が言っ​​ているように:

「サポート」という言葉は、Dojo と Dijit に非常に特有のものを意味します。つまり、Dojo Core と Dijit がブラウザーをサポートするということは、利用可能な機能が 100% 機能し、アクセシビリティーが正しく処理され、すべての国際化とローカリゼーションがサポートされることを意味します。これは非常に高いハードルです。つまり、Opera のようなブラウザーが Dijit で「サポートされている」とは言えませんが、すべてが Dijit で機能する可能性は非常に高いですが、私たちができなかった注意点があるかもしれません。回避策 (Opera のアクセシビリティ フックなど)。

この非常に高い基準レベルで「サポートされている」と彼らが主張するブラウザーは、(Dojo 1.3.2 の時点で) IE 6 から 8、Safari 3.1 から 4、Firefox 2 から 3.5、Chrome 1 から 2 (イベントを含むコア機能) です。また、Opera、Konqueror、FF 1.5 などでも動作します)。

于 2009-10-07T04:05:16.507 に答える
0

jQuery を使用している場合は、これを試してください。

$('input.text').click(function () {
        if (this.value == this.defaultValue) {
            this.value = '';
        }
    });
    $('input.text').blur(function () {
        if (this.value === '') {
            this.value = this.defaultValue;
        }
    });

$("input:text")すべてのテキスト入力フィールドをターゲットにする場合。

于 2009-10-07T03:55:34.260 に答える