Estoy usando el siguiente código. Funciona perfectamente en navegadores como Chrome, Firefox o Edge. Sin embargo, cuando reviso IE11, no funciona y rompe toda la funcionalidad.
var href = jQuery(this).attr('href'); if (href.includes('#')) { // action } Creo que includes() no funciona en IE11. ¿Existe alguna solucion para esto?
El problema se debe a que includes() no es compatible con todas las versiones de IE: Referencia de MDN
En su lugar, puede usar indexOf() , que es mucho más compatible:
var href = $(this).attr('href'); if (href.indexOf('#') != -1) { // action } También podría crear un prototipo de esto para agregar el método include includes() a IE:
String.prototype.includes = function(match) { return this.indexOf(match) !== -1; }includes no es compatible con Internet Explorer (u Opera)
En su lugar, puede usar indexOf . #indexOf devuelve el índice del primer carácter de la subcadena si está en la cadena; de lo contrario, devuelve -1. (Al igual que el equivalente de Array)
Prueba lo siguiente:
var href = jQuery(this).attr('href'); if(href.indexOf('#') > -1) //this will true if the string contains # { // action }Esto es compatible con todos los navegadores. Esta es una buena lectura para su problema :)
En primer lugar puedes comprobar. Porque IE no es compatible incluye: Referencia de MDN
Puedes usar así. Sí, sé que esta es la forma de VanillaJS. Si trabaja con varios navegadores, utilice esta forma para evitar errores:
var btn = document.querySelector('button') var link = document.querySelector('a') var isIE = window.navigator.userAgent.indexOf('Triden') > -1 btn.addEventListener("click", function() { var isHash = (!isIE) ? link.href.includes('#') : link.href.indexOf('#') > -1 alert(isHash) }, false) <button>Control hash</button> <hr /> <a href="http://somesite.com/#/GetUsers">Users</a>