removeattribute removeattr page disabled change attribute javascript jquery internet-explorer browser-detection

javascript - page - removeattr disabled



Compruebe si el usuario está utilizando IE con jQuery (27)

A partir de Internet Explorer 12+ (también conocido como Edge), la cadena de agente de usuario ha cambiado, una vez más.

/** * detect IE * returns version of IE or false, if browser is not Internet Explorer */ function detectIE() { var ua = window.navigator.userAgent; var msie = ua.indexOf(''MSIE ''); if (msie > 0) { // IE 10 or older => return version number return parseInt(ua.substring(msie + 5, ua.indexOf(''.'', msie)), 10); } var trident = ua.indexOf(''Trident/''); if (trident > 0) { // IE 11 => return version number var rv = ua.indexOf(''rv:''); return parseInt(ua.substring(rv + 3, ua.indexOf(''.'', rv)), 10); } var edge = ua.indexOf(''Edge/''); if (edge > 0) { // Edge (IE 12+) => return version number return parseInt(ua.substring(edge + 5, ua.indexOf(''.'', edge)), 10); } // other browser return false; }

Uso de la muestra:

alert(''IE '' + detectIE());

Cadena predeterminada de IE 10:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

Cadena predeterminada de IE 11:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

Cadena predeterminada de IE 12 (también conocida como Edge):

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0

Cadena predeterminada de Edge 13 (thx @DrCord):

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586

Cadena predeterminada de Edge 14:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/14.14300

Cadena predeterminada de Edge 15:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063

Cadena predeterminada de Edge 16:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299

Cadena predeterminada de Edge 17:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134

Cadena predeterminada de Edge 18 (vista previa de información privilegiada):

Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17730

Prueba en CodePen:

http://codepen.io/gapcode/pen/vEJNZN

Estoy llamando a una función como la de abajo haciendo clic en divs con cierta clase.

¿Hay alguna forma de verificar al iniciar la función si un usuario está utilizando Internet Explorer y cancelarlo / cancelarlo si está utilizando otros navegadores para que solo se ejecute para usuarios de IE? Todos los usuarios aquí estarían en IE8 o versiones superiores, por lo que no necesitaría cubrir IE7 y versiones inferiores.

Si pudiera decir qué navegador están usando, sería genial, pero no es obligatorio.

Función de ejemplo:

$(''.myClass'').on(''click'', function(event) { // my function });


Abajo encontré una manera elegante de hacer esto mientras buscaba en Google ---

/ detect IE var IEversion = detectIE(); if (IEversion !== false) { document.getElementById(''result'').innerHTML = ''IE '' + IEversion; } else { document.getElementById(''result'').innerHTML = ''NOT IE''; } // add details to debug result document.getElementById(''details'').innerHTML = window.navigator.userAgent; /** * detect IE * returns version of IE or false, if browser is not Internet Explorer */ function detectIE() { var ua = window.navigator.userAgent; // Test values; Uncomment to check result … // IE 10 // ua = ''Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)''; // IE 11 // ua = ''Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko''; // IE 12 / Spartan // ua = ''Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0''; // Edge (IE 12+) // ua = ''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586''; var msie = ua.indexOf(''MSIE ''); if (msie > 0) { // IE 10 or older => return version number return parseInt(ua.substring(msie + 5, ua.indexOf(''.'', msie)), 10); } var trident = ua.indexOf(''Trident/''); if (trident > 0) { // IE 11 => return version number var rv = ua.indexOf(''rv:''); return parseInt(ua.substring(rv + 3, ua.indexOf(''.'', rv)), 10); } var edge = ua.indexOf(''Edge/''); if (edge > 0) { // Edge (IE 12+) => return version number return parseInt(ua.substring(edge + 5, ua.indexOf(''.'', edge)), 10); } // other browser return false; }


Actualice la respuesta de SpiderCode para solucionar los problemas donde la cadena ''MSIE'' devuelve -1 pero coincide con ''Trident''. Solía ​​devolver NAN, pero ahora devuelve 11 para esa versión de IE.

function msieversion() { var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie > -1) { return ua.substring(msie + 5, ua.indexOf(".", msie)); } else if (navigator.userAgent.match(/Trident.*rv/:11/./)) { return 11; } else { return false; } }


Así es como lo está haciendo el equipo de Angularjs ( v 1.6.5 ):

var msie, // holds major version number for IE, or NaN if UA is not IE. // Support: IE 9-11 only /** * documentMode is an IE-only property * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx */ msie = window.document.documentMode;

Luego hay varias líneas de código dispersas a lo largo de usarlo como un número como

if (event === ''input'' && msie <= 11) return false;

y

if (enabled && msie < 8) {


Creo que te ayudará Here

function checkIsIE() { var isIE = false; if (navigator.userAgent.indexOf(''MSIE'') !== -1 || navigator.appVersion.indexOf(''Trident/'') > 0) { isIE = true; } if (isIE) // If Internet Explorer, return version number { kendo.ui.Window.fn._keydown = function (originalFn) { var KEY_ESC = 27; return function (e) { if (e.which !== KEY_ESC) { originalFn.call(this, e); } }; }(kendo.ui.Window.fn._keydown); var windowBrowser = $("#windowBrowser").kendoWindow({ modal: true, id: ''dialogBrowser'', visible: false, width: "40%", title: "Thông báo", scrollable: false, resizable: false, deactivate: false, position: { top: 100, left: ''30%'' } }).data(''kendoWindow''); var html = ''<br /><div style="width:100%;text-align:center"><p style="color:red;font-weight:bold">Please use the browser below to use the tool</p>''; html += ''<img src="/Scripts/IPTVClearFeePackage_Box/Images/firefox.png"/>''; html += '' <img src="/Scripts/IPTVClearFeePackage_Box/Images/chrome.png" />''; html += '' <img src="/Scripts/IPTVClearFeePackage_Box/Images/opera.png" />''; html += ''<hr /><form><input type="button" class="btn btn-danger" value="Đóng trình duyệt" onclick="window.close()"></form><div>''; windowBrowser.content(html); windowBrowser.open(); $("#windowBrowser").parent().find(".k-window-titlebar").remove(); } else // If another browser, return 0 { return false; } }


Esto devuelve true para cualquier versión de Internet Explorer:

function isIE(userAgent) { userAgent = userAgent || navigator.userAgent; return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1; }

El parámetro userAgent es opcional y por defecto es el agente de usuario del navegador.


Esto solo funciona por debajo de la versión IE 11.

var ie_version = parseInt(window.navigator.userAgent.substring(window.navigator.userAgent.indexOf("MSIE ") + 5, window.navigator.userAgent.indexOf(".", window.navigator.userAgent.indexOf("MSIE "))));

console.log("version number",ie_version);


He colocado este código en la función de preparación de documentos y solo se activa en Internet Explorer. Probado en Internet Explorer 11.

var ua = window.navigator.userAgent; ms_ie = /MSIE|Trident/.test(ua); if ( ms_ie ) { //Do internet explorer exclusive behaviour here }


He usado esto

function notIE(){ var ua = window.navigator.userAgent; if (ua.indexOf(''Edge/'') > 0 || ua.indexOf(''Trident/'') > 0 || ua.indexOf(''MSIE '') > 0){ return false; }else{ return true; } }


Intenta esto si estás usando la versión jquery> = 1.9 ,

var browser; jQuery.uaMatch = function (ua) { ua = ua.toLowerCase(); var match = /(chrome)[ //]([/w.]+)/.exec(ua) || /(webkit)[ //]([/w.]+)/.exec(ua) || /(opera)(?:.*version|)[ //]([/w.]+)/.exec(ua) || /(msie) ([/w.]+)/.exec(ua) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([/w.]+)|)/.exec(ua) || /(Trident)[//]([/w.]+)/.exec(ua) || []; return { browser: match[1] || "", version: match[2] || "0" }; }; // Don''t clobber any existing jQuery.browser in case it''s different if (!jQuery.browser) { matched = jQuery.uaMatch(navigator.userAgent); browser = {}; if (matched.browser) { browser[matched.browser] = true; browser.version = matched.version; } // Chrome is Webkit, but Webkit is also Safari. if (browser.chrome) { browser.webkit = true; } else if (browser.webkit) { browser.safari = true; } jQuery.browser = browser; }

Si usa jQuery versión <1.9 ($ .browser se eliminó en jQuery 1.9) use el siguiente código en su lugar:

$(''.myClass'').on(''click'', function (event) { if ($.browser.msie) { alert($.browser.version); } });


La solución de @SpiderCode no funciona con IE 11. Esta es la mejor solución que utilicé a partir de ahora en mi código, donde necesito la detección del navegador para una función en particular.

IE11 ya no informa como MSIE, de acuerdo con esta lista de cambios, es intencional evitar la detección errónea.

Lo que puede hacer si realmente quiere saber que es IE es detectar el Trident / string en el agente de usuario si navigator.appName devuelve Netscape, algo así como (el no probado);

Gracias a esta respuesta

function isIE() { var rv = -1; if (navigator.appName == ''Microsoft Internet Explorer'') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[/.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 ); } else if (navigator.appName == ''Netscape'') { var ua = navigator.userAgent; var re = new RegExp("Trident/.*rv:([0-9]{1,}[/.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 ); } return rv == -1 ? false: true; }


Muchas respuestas aquí, y me gustaría añadir mi entrada. IE 11 era tan insensato con respecto a flexbox (vea todos sus problemas e inconsistencias here ) que realmente necesitaba una forma fácil de verificar si un usuario está usando algún navegador IE (hasta e incluyendo 11) pero excluyendo a Edge, porque Edge es realmente bastante agradable.

Basándome en las respuestas dadas aquí, escribí una función simple que devuelve una variable booleana global que luego puede usar en la línea. Es muy fácil verificar si hay IE.

var isIE; (function() { var ua = window.navigator.userAgent, msie = ua.indexOf(''MSIE ''), trident = ua.indexOf(''Trident/''); isIE = (msie > -1 || trident > -1) ? true : false; })(); if (isIE) { alert("I am an Internet Explorer!"); }

De esta manera, solo tiene que realizar la búsqueda una vez y almacenar el resultado en una variable, en lugar de tener que buscar el resultado en cada llamada de función. (Hasta donde sé, ni siquiera tiene que esperar un documento listo para ejecutar este código, ya que el agente de usuario no está relacionado con el DOM).


O esta versión realmente corta, devuelve verdadero si el navegador es Internet Explorer:

function isIe() { return window.navigator.userAgent.indexOf("MSIE ") > 0 || !!navigator.userAgent.match(/Trident.*rv/:11/./); }


Otra función simple (aún legible por humanos) para detectar si el navegador es IE o no (ignorando a Edge, que no es malo en absoluto):

function isIE() { var ua = window.navigator.userAgent; var msie = ua.indexOf(''MSIE ''); // IE 10 or older var trident = ua.indexOf(''Trident/''); //IE 11 return (msie > 0 || trident > 0); }


Puede detectar todo Internet Explorer (Última versión probada 12).

<script> var $userAgent = ''''; if(/MSIE/i[''test''](navigator[''userAgent''])==true||/rv/i[''test''](navigator[''userAgent''])==true||/Edge/i[''test''](navigator[''userAgent''])==true){ $userAgent=''ie''; } else { $userAgent=''other''; } alert($userAgent); </script>

Consulte aquí https://jsfiddle.net/v7npeLwe/



Puede utilizar el objeto de navegador para detectar usuario-navegador, no necesita jquery para ello

<script type="text/javascript"> if (/MSIE (/d+/./d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf("Trident/") > -1 ){ // do stuff with ie-users } </script>

http://www.javascriptkit.com/javatutors/navigator.shtml


Sé que esta es una pregunta antigua, pero en caso de que alguien se vuelva a encontrar y tenga problemas con la detección de IE11, aquí hay una solución funcional para todas las versiones actuales de IE.

var isIE = false; if (navigator.userAgent.indexOf(''MSIE'') !== -1 || navigator.appVersion.indexOf(''Trident/'') > 0) { isIE = true; }


Si no desea utilizar el agente de usuario, también puede hacer esto para verificar si el navegador es IE. El código comentado en realidad se ejecuta en los navegadores IE y convierte el "falso" en "verdadero".

var isIE = /*@cc_on!@*/false; if(isIE){ //The browser is IE. }else{ //The browser is NOT IE. }


Solo añadiendo a la respuesta extremadamente útil de Mario.

Si todo lo que quiere saber es si el navegador es IE o no, el código se puede simplificar hasta:

var ms_ie = false; var ua = window.navigator.userAgent; var old_ie = ua.indexOf(''MSIE ''); var new_ie = ua.indexOf(''Trident/''); if ((old_ie > -1) || (new_ie > -1)) { ms_ie = true; } if ( ms_ie ) { //IE specific code goes here }

Actualizar

Recomiendo esto ahora. Todavía es muy legible y es mucho menos código :)

var ua = window.navigator.userAgent; var is_ie = /MSIE|Trident/.test(ua); if ( is_ie ) { //IE specific code goes here }

Gracias a JohnnyFun en los comentarios por la respuesta abreviada :)


Trata de hacer asi

if ($.browser.msie && $.browser.version == 8) { //my stuff }


Usando las respuestas anteriores; Regreso simple y condensado booleano:

var isIE = /(MSIE|Trident//|Edge//)/i.test(navigator.userAgent);


Utilice el siguiente método de JavaScript:

function msieversion() { var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie > 0) // If Internet Explorer, return version number { alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)))); } else // If another browser, return 0 { alert(''otherbrowser''); } return false; }

Puede encontrar los detalles en el siguiente sitio de soporte de Microsoft:

Cómo determinar la versión del navegador desde el script

Actualización: (soporte IE 11)

function msieversion() { var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv/:11/./)) // If Internet Explorer, return version number { alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)))); } else // If another browser, return 0 { alert(''otherbrowser''); } return false; }


Método 01:
$ .browser quedó en desuso en jQuery versión 1.3 y se eliminó en 1.9

if ( $.browser.msie) { alert( "Hello! This is IE." ); }

Método 02:
Usando comentarios condicionales

<!--[if gte IE 8]> <p>You''re using a recent version of Internet Explorer.</p> <![endif]--> <!--[if lt IE 7]> <p>Hm. You should upgrade your copy of Internet Explorer.</p> <![endif]--> <![if !IE]> <p>You''re not using Internet Explorer.</p> <![endif]>

Método 03:

/** * Returns the version of Internet Explorer or a -1 * (indicating the use of another browser). */ function getInternetExplorerVersion() { var rv = -1; // Return value assumes failure. if (navigator.appName == ''Microsoft Internet Explorer'') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[/.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 ); } return rv; } function checkVersion() { var msg = "You''re not using Internet Explorer."; var ver = getInternetExplorerVersion(); if ( ver > -1 ) { if ( ver >= 8.0 ) msg = "You''re using a recent copy of Internet Explorer." else msg = "You should upgrade your copy of Internet Explorer."; } alert( msg ); }

Método 04:
Usar JavaScript / Detección manual

/* Internet Explorer sniffer code to add class to body tag for IE version. Can be removed if your using something like Modernizr. */ var ie = (function () { var undef, v = 3, div = document.createElement(''div''), all = div.getElementsByTagName(''i''); while ( div.innerHTML = ''<!--[if gt IE '' + (++v) + '']><i></i>< ![endif]-->'', all[0]); //append class to body for use with browser support if (v > 4) { $(''body'').addClass(''ie'' + v); } }());

Link de referencia


Utilizando modernizr

Modernizr.addTest(''ie'', function () { var ua = window.navigator.userAgent; var msie = ua.indexOf(''MSIE '') > 0; var ie11 = ua.indexOf(''Trident/'') > 0; var ie12 = ua.indexOf(''Edge/'') > 0; return msie || ie11 || ie12; });


function detectIE() { var ua = window.navigator.userAgent; var ie = ua.search(/(MSIE|Trident|Edge)/); return ie > -1; }


function msieversion() { var ua = window.navigator.userAgent; console.log(ua); var msie = ua.indexOf("MSIE "); if (msie > -1 || navigator.userAgent.match(/Trident.*rv:11/./)) { // If Internet Explorer, return version numbe // You can do what you want only in IE in here. var version_number=parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))); if (isNaN(version_number)) { var rv_index=ua.indexOf("rv:"); version_number=parseInt(ua.substring(rv_index+3,ua.indexOf(".",rv_index))); } console.log(version_number); } else { //other browser console.log(''otherbrowser''); } }

Debería ver el resultado en la consola, use Chrome Inspeccionar.