意見タイプの質問:
私の意見
2.0 のほとんどすべては、HTML5 の例外を除いて同じです。多くの「普通の」JS 関数は jQuery スタイルのマークアップに置き換えられ (これは私のコードの遵守によるものです)、コードは現在新しく実装された「標準」を使用しているため、古い IE とは互換性がありません。
ただし、現在、ネームスペースは同じです。つまり、まったく悪くないと思いますが、以前のバージョンの jQuery と同じように、HTML5 ブラウザー (Chrome、FF、IE9+) で同じように見えるものを、古いバージョンでも同じように見えるとは思わないでください。ブラウザ。以前のバージョンと同様に、可能性のある IE 固有のチェックを行う必要があるかもしれません。これは本当に新しいことではありません。
多くの場合、ブランケットされた jQuery マークアップで問題ありませんが、わずかな違いに気付くかもしれません。たとえば、IE 9 または 10 がそれらを処理する方法とは対照的に、IE 7 が特定のスタイルで .animate を処理する方法です。前に言ったように、これは本当に新しいことではありません。
私は個人的に、最新の標準に対応できるようにサイトを設計し、その後、古いブラウザーとの互換性を保つために「バック バージョン」を作成します。私がこれを行うのは、「特定の」を投入する必要があるものは何でも、通常、コードの残りの部分に比べてそれほど大きくないからです。また、私が何かの開発を終える頃には、私がサポートすることが期待されていたかもしれない古いもののうちの 1 つは、もはや問題ではないかもしれません。
それが少しでも役立つのであれば、MS は、Vist/IE9 の下にあるすべてのサポートを、今後 5 年間ほどかけて徐々にではあるが着実に廃止することを既に発表しています。古いブラウザのサポートに対する需要はますます少なくなると予想されます。http://support.microsoft.com/gp/lifeadditionalproducts (ホワイトペーパーにはより良い記事がありますが、それは私の電子メールに記載されています。ホワイトペーパーのリストがオンラインのどこにあるのかわかりません)
最近見つけたもう 1 つの「落とし穴」は、Firefox が Microsoft のようになりつつあることです。彼らは自分たちの「独自の標準」を取り入れようとしており、「私」が標準開発と考えるものとは反対の方向に進んでいることがわかりました。これは、「すべてのブラウザー (IE7 を含む!) で動作するが、FIREFOX では!」なぜ FF がそれほど変化しているのかを十分に調査したことはありませんが、FF が開発にとって新しい「IE ヘッドエイク」になりつつあることは間違いありません。
代表的な例の 1 つは、ヘッダーの CSS スタイルが不完全であったり、新しい FF エンジンが好まない特定の CSS3 標準であったりすると、ページ全体が強制終了されます。頭のてっぺんから、私が遭遇した1つの問題(これを正しく覚えていれば、数週間前でした)は、テーブルの行:after
と Firefox は、私の CSS と "BOOM! DOA!" のその 1 行に到達します。JS は機能せず、その後のスタイリングも機能しません。その 1 行を and の組み合わせを使用するように変更しnth-child
、+
突然 FF からの引数がなくなりました。
私は以前は FF が大好きでしたが、IE がついに追いつき、MS が「bad old carp」のサポートの終了を発表し、Mozilla がギアを切り替えて遅れをとることを発表したため (これも私の意見です)、私は-mozilla-
新しい「すべての背後にある」ものであると考えています。 「条件付き」ステートメントを作成する必要があるブラウザ。
更新 [2013 年 6 月 5 日]
この投稿で新しいポイントを受け取ったので、少し時間を取ってレビューし、jQuery Name-Spacing で見つけたもう 1 つの「落とし穴」を共有したいと思いました。なぜ以前に言及しなかったのかはわかりませんが、ちょっと古いことを除けば、ほとんどの人が知っていると思います. しかし、私が最近与えた他の助けのために、私はそれがかなり「不明」であることがわかりました.
1.7 のリリースでは、jQuery を使用した古い「落とし穴」が 1 つありました。調べてみると、メジャーな名前空間が変更され、後に完全に非推奨になったことがわかります。$.bind
、$.delegate
、およびの名前空間は、および$.live
のよりわかりやすい名前空間に置き換えられました。もちろん、これはバージョンに基づくステートメントが必要なため、新しいものに移行する開発者にとっては少し面倒でした。$.on
$.off
if
繰り返しますが、これは jQuery バージョン 1.7 以降と 1.7 の間の切り替えのみの問題です!
新しい jQuery と古い jQuery を切り替える場合は、委任された関数を名前付きメソッドでラップすることをお勧めします。その後、 のように呼び出すことができます$(document).on("event", "element", functionName)
。名前付き関数のパラメーターが になることを忘れないでくださいevent
。また、これに対する解決策を見逃していて必要な場合 (if
ステートメント) は、次のように簡単です。
if ($.fn.on) {
/*
* is using jQuery ver >= 1.7
* do work as necessary using:
* $(document).on("event", "selector", callback)
*/
}
else {
/*
* is using jQuery ver < 1.7
* do work as necessary using something like:
* $(document).live("event", "selector", callback)
*/
}