JSは良いニュースです、もちろん、Microsoftは今、彼はフロントエンドのために、IE、打ち上げエッジブラウザを放棄しようとしていることが多いIEブラウザの互換性の問題で見つかった、プロセスで使用します。
次のここで整理いくつかの一般的な互換性の問題は、不測の事態を避けるために、ソリューションを添付してしかし、まだIEユーザーの割合は、過小評価することはできません。
非線スタイルの1買収
IEブラウザ:element.currentstyle + ATTR
通常のブラウザ(クローム、FF):getComputedStyle(要素、偽)+ ATTR
これらの2つのタイプは、以下のブラウザIE、通常と呼ばれています
(すべてのブラウザと互換性のある)の呼び出しを容易にするために、次のパッケージ機能
関数でgetStyle(ELE、ATTR){ VARの A = "" ; もし(ele.currentStyle){ // IE A = ele.currentStyle [ATTR]。 } 他{ = getComputedStyle(ELE 偽)ATTR]。 // 正常 }
2. GETイベントオブジェクト
IE:window.event
ノーマル:質量参加イベントに
obox.onclick = 関数(イブ){ VARの E =前夜|| window.event; console.log(E) }
3.停止イベントバブリング
イベントバブリング:イベントは要素がトリガされると、それは最初に同じイベントにすべての親をトリガー回し、その後、それに対応するイベントがトリガされます。親に同じイベントではありません、アップトリガーを続けます
そのonmouseenterに注意し、イベントバブリングをサポートしていませonmouseleave
IE:event.cancelBubble =真
通常:するevent.stopPropagation()
関数stopBubble(E){ 場合(e.stopPropagation){ e.stopPropagation()。 //正常 } 他{ e.cancelBubble = 真。 // IE } }
4.イベントの委任
イベントのデリゲート:同じイベントの複数の同一の要素は、ページ上の既存の共通の親要素に追加、イベントソースで、イベントバブルを使用し、実際にクリックされた要素を見つけます
IE:event.srcElement
ノーマル:event.target
関数タール(T){ VAR T = e.target || e.srcElement;}
5.イベント結合方法を追加
イベントは、2つの方法で結合:割り当てタイプとスタイルを聴きます
(1)割り当て式:(DOM 0レベルのイベントバインディング)
それは、より一般的に、互換性の問題を使用していません
例:obox.onclick =関数(){}
(DOMレベル2イベントバインディング):(2)式を監視
IE:element.attachEvent( "上" +タイプ、CB)
正常:element.addEventListener(タイプ、CB)
関数addEvent(ELE、タイプ、CB){ IF (ele.addEventListener){ ele.addEventListener(タイプ、CB) //リスナー式:ノーマル } 他 IF (ele.attachEvent){ ele.attachEvent( +タイプ"ON"、 CB) //リスナー式:のIE } 他{ ELE [ +型"ON"] = CB; 式//割り当て } }
6.イベント結合方法を削除
また、対応するイベント結合方法を削除
(1)結合割当タイプのイベントを削除します
例:obox.onclick = NULL
(2)リスナーイベントバインディングタイプを削除します。
IE:element.detachEvent( "上" +タイプ、CB)
正常:element.removeEventListener(タイプ、CB)
関数removeEvent(ELEは、タイプ、Cbの){ IF (ele.removeEventListener){ ele.removeEventListenerは(タイプ、Cbの) //入力リッスン:正常削除を } 他 IF (ele.detachEvent){ ele.detachEvent( "ON" +タイプ、CB) //リスナー式:IE欠失 } 他{ ELE [ +型"ON"] = NULL ; //は割り当てタイプを削除 } }
7.キーキーボードイベントを取得
IE:event.which
ノーマル:event.keycode
機能コード(イブ){ VARの E = || window.eventイブ; //第1の取得イベント のvarコード= e.keyCode || e.which; //キー再取得 }
8.デフォルトのイベントを防ぎます
IE:event.returnValue = falseを
通常:event.preventDefault()
関数stopDefault(E){ 場合(e.preventDefault){ e.preventDefault() //正常 } 他{ e.returnValue = 偽。 // IE } }
新しい出会いの互換性の問題が議論を歓迎する、更新していきます