ホームページ > ウェブフロントエンド > jsチュートリアル > jsを使ってブラウザの実装コードを検出する_基礎知識

jsを使ってブラウザの実装コードを検出する_基礎知識

WBOY
リリース: 2016-05-16 17:33:48
オリジナル
960 人が閲覧しました

クロスブラウザーの JS プログラムを作成する場合、ブラウザーの検出は非常に重要なタスクです。場合によっては、さまざまなブラウザー用に分岐したコードを作成する必要があります。
次はその 1 つです:

コードをコピーします コードは次のとおりです:

//イベントツール関数を追加します
function addEvent(el,type,handle){
if(el.addEventListener){//標準ブラウズ用
el.addEventListener(type,handle) ,false);
}else if(el.attachEvent){//IE の場合
el.attachEvent("on" イベント,ハンドル);
}else{//other
el[" on" type] =handle;
}

}


1, ブラウザを検出する最初の方法は、ユーザー エージェント検出と呼ばれます。最も古いものは、ブラウザの名前とバージョンを含む、ターゲット ブラウザの正確なモデルを検出します。実際、これは navigator.userAgen または navigator.appName によって取得される文字列です。次のように:
コードをコピー コードは次のとおりです:

function isIE(){
return navigator .appName.indexOf("Microsoft Internet Explorer")!=-1 && document.all;
}
function isIE6() {
return navigator.userAgent.split(";") [1].toLowerCase().indexOf("msie 6.0")=="-1"?false:true;
}
関数 isIE7(){
return navigator.userAgent.split("; ")[1 ].toLowerCase().indexOf("msie 7.0")=="-1"?false:true;
}
function isIE8(){
return navigator.userAgent.split( ";") [1].toLowerCase().indexOf("msie 8.0")=="-1"?false:true;
}
関数 isNN(){
return navigator.userAgent. IndexOf("Netscape ")!=-1;
}
関数 isOpera(){
return navigator.appName.indexOf("Opera")!=-1;
}
関数isFF(){
return navigator.userAgent.indexOf("Firefox")!=-1;
}
function isChrome(){
return navigator.userAgent.indexOf("Chrome") > ; -1;
}

2, 2 番目はオブジェクト/特徴検出方法と呼ばれ、ブラウザの機能を判断する方法であり、これも一般的な方法です。現在。つまり、オブジェクトを使用する前にその存在を検出します。このメソッドは、前述の addEvent メソッドで使用されます。 .addEventListener は w3c dom 標準メソッドですが、IE は独自の独自のattachEvent を使用します。以下にいくつか挙げます:

a、talbe.cells は IE/Opera でのみサポートされています。

b、innerText/insertAdjacentHTML は、Firefox を除く IE6/7/8/Safari/Chrome/Opera でサポートされています。

c, window.external.AddFavorite は、IE でお気に入りに追加するために使用されます。

d, window.sidebar.addPanel は FF のお気に入りに追加するために使用されます。


3、3 番目のタイプは非常に興味深いもので、ブラウザの欠陥またはバグ手法と呼びましょう。つまり、特定のパフォーマンスはブラウザの製造元によって意図的に実装されていません。次のように:

コードをコピーします コードは次のとおりです:

var isIE = "v1 ";
var isIE = !-[1,];
var isIE = "v"=="v";
isSafari=/a/.__proto__=='//';
isOpera=!! window.opera;

最も古典的な判定方法は、現在、IE を判定するための最小コードは 6 バイトだけです。これはロシア人によって発見されました。配列の長さ [1,] が使用されます。英国の若き James Padolsey も、IE の条件付きコメント
を使用してコード をコピーしています。コードは次のとおりです。 🎜>
var ie = (function(){
var undef,
v = 3,
div = document.createElement('div'),
all = div. getElementsByTagName('i');

while (
div.innerHTML = ' ;',
all[0]
);
return v > v : undef
}());


Known as the most creative IE judgment in history.

Note 1: The isIE = "v" == "v" method IE9 has fixed the bug, and you cannot use this method to judge the IE browser (tested with IE9 pre3 on 2010-6-29)

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート