IE対応BUG要約およびソリューション(継続的更新)
3127 ワード
本編は開発過程で出会った各種IE互換性の小さい問題を総括するために、比較的に複雑な会議は1篇の文章を開いて説明する.
また、私の手元には、オリジナルIE 8、オリジナルIE 9、オリジナルIE 11、およびIE 11シミュレーションのIE 5、7、8、9、10しかありません.IE 6が古すぎてテストをやめた.
jqueryのouterHTMLでhref属性を含むaタグを作成できません(IE 5-8)
問題の再現:
影響ブラウザ:
テスト
アナログIE 5
アナログIE 7
アナログIE 8
原生IE 8
アナログIE 9
原生IE 9
アナログIE 10
原生IE 11
!!$("").get(0) N N N N Y Y Y Y !!$("").attr("href","x").get(0)Y Y Y Y Y Y Y Y Y Y Y Y Y Sorection:typeof$("<a>").attr("href","xxx").get(0);//IE 8"object"Date object"を使用して新しいDate objectを構築すると、ミリ秒値が失われる(所有的IE、火狐)詳細は--。FireFoxとIEの下でDateを使用して新しいDateオブジェクトのBUGを構築する
IE下コンソール対象エラー
詳しくは--IEをコンソールに互換性を持たせる--「8001001エラーのため、この操作は完了できません」というソリューション
IE 8下congsole.logのtypeofはobject
詳しくは--IE 8下のtypeof(console.log)が「object」のBUG
IE 8下buttonの値は標準ブラウザと一致しません
IE 8以下の全てのマウスイベント(mousedown,mouseup,click等)のevent.buttonの値は標準ブラウザと一致せず、テストはIE 8-にのみ表示されます.
問題の再現:
影響ブラウザ:
e.button値テスト
IE5
IE7
IE8
IE9
IE10
IE11
火狐
グーグル
マウスの左ボタン
1
1
1
0
0
0
0
0
マウスの中ボタン
4
4
4
1
1
1
1
1
マウスの右ボタン
2
2
2
2
2
2
2
2
ソリューション:
jqueryのe.whichプロパティ(1:左キー、2:中キー、3:右キー)を使用すると、ブラウザの一貫性を強調できます.
同時にjquery 1.9.1のソースコードでは、この問題に対する互換性のある解決策が見つかります.
また、私の手元には、オリジナルIE 8、オリジナルIE 9、オリジナルIE 11、およびIE 11シミュレーションのIE 5、7、8、9、10しかありません.IE 6が古すぎてテストをやめた.
jqueryのouterHTMLでhref属性を含むaタグを作成できません(IE 5-8)
問題の再現:
typeof $("<a href='xxx'>").get(0);//IE7-8:"undefined"
typeof $("<a href='xxx'>").get(0);// :"object"
影響ブラウザ:
テスト
アナログIE 5
アナログIE 7
アナログIE 8
原生IE 8
アナログIE 9
原生IE 9
アナログIE 10
原生IE 11
!!$("").get(0) N N N N Y Y Y Y !!$("").attr("href","x").get(0)Y Y Y Y Y Y Y Y Y Y Y Y Y Sorection:typeof$("<a>").attr("href","xxx").get(0);//IE 8"object"Date object"を使用して新しいDate objectを構築すると、ミリ秒値が失われる(所有的IE、火狐)詳細は--。FireFoxとIEの下でDateを使用して新しいDateオブジェクトのBUGを構築する
IE下コンソール対象エラー
詳しくは--IEをコンソールに互換性を持たせる--「8001001エラーのため、この操作は完了できません」というソリューション
IE 8下congsole.logのtypeofはobject
詳しくは--IE 8下のtypeof(console.log)が「object」のBUG
IE 8下buttonの値は標準ブラウザと一致しません
IE 8以下の全てのマウスイベント(mousedown,mouseup,click等)のevent.buttonの値は標準ブラウザと一致せず、テストはIE 8-にのみ表示されます.
問題の再現:
$("body").mousedown(function(e){
console.log(e.button);//
})
影響ブラウザ:
e.button値テスト
IE5
IE7
IE8
IE9
IE10
IE11
火狐
グーグル
マウスの左ボタン
1
1
1
0
0
0
0
0
マウスの中ボタン
4
4
4
1
1
1
1
1
マウスの右ボタン
2
2
2
2
2
2
2
2
ソリューション:
jqueryのe.whichプロパティ(1:左キー、2:中キー、3:右キー)を使用すると、ブラウザの一貫性を強調できます.
同時にjquery 1.9.1のソースコードでは、この問題に対する互換性のある解決策が見つかります.
// Add which for click: 1 === left; 2 === middle; 3 === right
// Note: button is not normalized, so don't use it
if ( !event.which && button !== undefined ) {
event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
}