Rumah  >  Artikel  >  hujung hadapan web  >  Pembacaan js yang disyorkan untuk menentukan pelayar IE dengan cepat (serasi dengan kemahiran javascript IE10 dan IE11)_

Pembacaan js yang disyorkan untuk menentukan pelayar IE dengan cepat (serasi dengan kemahiran javascript IE10 dan IE11)_

WBOY
WBOYasal
2016-05-16 15:26:121716semak imbas

Tentukan sama ada pelayar IE menggunakan window.navigator.userAgent Jejaki maklumat ini dan dapatkan bahawa dalam persekitaran pembangunan, ia diiktiraf sebagai IE10, tetapi apabila mengakses pelayan, ia diiktiraf sebagai IE11, tetapi tiada tanda MSIE. dalam userAgent IE11 Sebabnya ialah Ini dia.


Cuma tukar kaedah menilai pelayar IE kepada yang berikut.

function isIE() { //ie?
 if (!!window.ActiveXObject || "ActiveXObject" in window)
 return true;
 else
 return false;
 }

Berikut adalah beberapa perkongsian, anda boleh melihatnya, analisis dan penjelasan yang sangat praktikal

Dalam banyak kes, kami biasanya menggunakan navigator.userAgent dan ungkapan biasa untuk menentukan versi penyemak imbas IE Berikut ialah pengenalan untuk menggunakan ciri yang berbeza dalam pelayar IE untuk menentukan pelayar IE

1 Tentukan pelayar IE dan pelayar bukan IE

Perbezaan antara pelayar IE dan pelayar bukan IE ialah pelayar IE menyokong ActiveXObject, tetapi pelayar bukan IE tidak menyokong ActiveXObject. Sebelum pelayar IE11 muncul, ini adalah cara kami sering menilai IE dan bukan IE

function isIe(){
 return window.ActiveXObject ? true : false;
 }

Tetapi dalam IE11, penghakiman di atas mengembalikan palsu saya sendiri menguji kod berikut dalam IE11

Salin kod Kod adalah seperti berikut:

alert(window.ActiveXObject);
alert(typeof window.ActiveXObject);

Hasilnya ialah

Kenapa ni? Jelas sekali ActiveXObject wujud, tetapi hasil typeof memang tidak ditentukan. Sesiapa yang tahu hasilnya boleh beritahu saya kenapa? Untuk Shenma?

Tapak web rasmi di Microsoft menerangkan perbezaan dalam ActiveXObject IE11. http://msdn.microsoft.com/en-us/library/ie/dn423948(v=vs.85).aspx. Tetapi sebab jenis tidak dijelaskan. Tidak mengapa jika kita menggunakan kod berikut untuk mengesan

alert("ActiveXObject" dalam tetingkap)//Mengembalikan palsu di bawah ie11

Ini yang saya tidak faham lagi "ActiveXObject" dalam tetingkap mengembalikan benar. Mengapakah kod yang digunakan untuk menilai pelayar IE kembali palsu dalam IE11? Sekali lagi, saya mohon pakar-pakar memberi saya penjelasan. Terima kasih
Berikut ialah kaedah langsung untuk menentukan sama ada pelayar IE dan bukan IE serasi dengan IE11.

function isIe(){
 return ("ActiveXObject" in window);
 }

Perhatikan bahawa prasyarat adalah untuk tidak menimpa ActiveXObject dalam kod program kami. hehe.

2 Tentukan pelayar IE6

Bermula dari IE7, IE menyokong objek XMLHttpRequest, tetapi IE6 tidak menyokongnya. Berdasarkan ciri ini dan fungsi sebelumnya isIe() untuk menilai IE, kita tahu cara menilai IE6. Kaedah penghakiman adalah seperti berikut

function isIe6() {
 // ie6是不支持window.XMLHttpRequest的
 return isIe() && !window.XMLHttpRequest;
 }

3 Tentukan pelayar IE7

Oleh kerana mod dokumen disokong bermula dari IE8, ia menyokong document.documentMode. IE7 tidak menyokongnya, tetapi IE7 menyokong objek XMLHttpRequest. Kaedah penghakiman adalah seperti berikut

function isIe7() {
 //只有IE8+才支持document.documentMode
 return isIe() && window.XMLHttpRequest && !document.documentMode;
 }

4 Tentukan pelayar IE8

Bermula dari IE9, Microsoft perlahan-lahan menghampiri standard Kami memanggil IE678 sebagai penyemak imbas bukan standard, dan IE9 serta penyemak imbas lain seperti chrome dan firefox dipanggil penyemak imbas standard. Salah satu perbezaan antara keduanya adalah. Sila uji kod berikut. Apa yang dikembalikan

alert(-[1,]);//Apa yang dicetak dalam IE678 ialah NaN, tetapi apa yang dicetak dalam penyemak imbas standard ialah -1

Kemudian kita boleh menilai ia adalah pelayar IE8 berdasarkan perbezaan di atas. Caranya adalah seperti berikut

function isIe8(){
 // alert(!-[1,])//->IE678返回NaN 所以!NaN为true 标准浏览器返回-1 所以!-1为false
 return isIe() &&!-[1,]&&document.documentMode;
}

5 Tentukan pelayar IE9, IE10, IE11

Pelayar menyokong objek terbina dalam JSON daripada IE8 dan menyokong mod ketat js bermula dari IE10 Sila rujuk artikel ini untuk mod ketat dalam JShttp://www.jb51.net/article. /75037 .htm

Alert(!-[1,]) di bawah IE9 mengembalikan false. IE9 menyokong addEventListener, tetapi penyemak imbas IE11 tidak menyokong attachEvent yang mengikat acara asal yang unik kepada IE. Berdasarkan perbezaan ini, kita boleh membezakan pelayar IE9, IE10 dan IE11.

6 Tentukan pelayar lain

/****来自曾经项目中封装的公共类函数***/
//检测函数
var check = function(r) {
 return r.test(navigator.userAgent.toLowerCase());
 };
var statics = {
 /**
 * 是否为webkit内核的浏览器
 */
 isWebkit : function() {
 return check(/webkit/);
 },
 /**
 * 是否为火狐浏览器
 */
 isFirefox : function() {
 return check(/firefox/);
 },
 /**
 * 是否为谷歌浏览器
 */
 isChrome : function() {
 return !statics.isOpera() && check(/chrome/);
 },
 /**
 * 是否为Opera浏览器
 */
 isOpera : function() {
 return check(/opr/);
 },
 /**
 * 检测是否为Safari浏览器
 */
 isSafari : function() {
 // google chrome浏览器中也包含了safari
 return !statics.isChrome() && !statics.isOpera() && check(/safari/);
 }
};

Bagaimanakah js menentukan versi pelayar IE termasuk IE11

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.jb51.net/" />
<title>脚本之家</title>
<script type="text/javascript">
var userAgent = navigator.userAgent, 
rMsie = /(msie\s|trident.*rv:)([\w.]+)/, 
rFirefox = /(firefox)\/([\w.]+)/, 
rOpera = /(opera).+version\/([\w.]+)/, 
rChrome = /(chrome)\/([\w.]+)/, 
rSafari = /version\/([\w.]+).*(safari)/; 
var browser; 
var version; 
var ua = userAgent.toLowerCase(); 
function uaMatch(ua){ 
 var match = rMsie.exec(ua); 
 if(match != null){ 
 return { browser : "IE", version : match[2] || "0" }; 
 } 
 var match = rFirefox.exec(ua); 
 if (match != null) { 
 return { browser : match[1] || "", version : match[2] || "0" }; 
 } 
 var match = rOpera.exec(ua); 
 if (match != null) { 
 return { browser : match[1] || "", version : match[2] || "0" }; 
 } 
 var match = rChrome.exec(ua); 
 if (match != null) { 
 return { browser : match[1] || "", version : match[2] || "0" }; 
 } 
 var match = rSafari.exec(ua); 
 if (match != null) { 
 return { browser : match[2] || "", version : match[1] || "0" }; 
 } 
 if (match != null) { 
 return { browser : "", version : "0" }; 
 } 
} 
var browserMatch = uaMatch(userAgent.toLowerCase()); 
if (browserMatch.browser){ 
 browser = browserMatch.browser; 
 version = browserMatch.version; 
} 
document.write(browser+version);  
</script>
</script>
</head>
<body>
 
</body>
</html>

Kod di atas melaksanakan fungsi penghakiman Berikut adalah pengenalan kepada prinsip pelaksanaannya saya harap ia dapat membantu rakan-rakan yang memerlukan.

Mari kita lihat sekeping kod dahulu:

navigator.userAgent

Tangkapan skrin maklumat di bawah IE11:

Kemudian gunakan ungkapan biasa yang sepadan untuk dipadankan. Masih terdapat perbezaan besar antara IE11 dan versi penyemak imbas sebelumnya Dalam versi sebelumnya, maklumat ini mengandungi msie, tetapi ia tidak lagi dalam IE11 baru ditambah, diikuti dengan nombor versi penyemak imbas ini.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn