Estoy revisando la URL para ver si contiene o incluye una ?
para controlar el estado del hash pop en la ventana. Todos los demás navegadores no tienen problemas, solo IE.
El depurador me da este error cuando intento cargar de esta manera:
El objeto no admite propiedad o método '
includes
'
No recibo ningún error cuando cargo la página a través del estado de pop.
$(document).ready(function(e) {
if(window.location.hash) {
var hash;
if(window.location.hash.includes("?")) {
alert('I have a ?');
hash = window.location.hash.substring(window.location.hash.indexOf('#') + 0,window.location.hash.indexOf('?'));
}else {
hash = window.location.hash;
};
if (hash=="#DRS" || hash=="#DRP" || hash=="#DFFI" || hash=="#DCI" || hash=="#DCP" || hash=="#DRP" || hash=="#DRMA" || hash=="#EICS" || hash=="#ORG"){
$(hash+'Content').addClass('pageOn').removeClass('pageOff');
}else {
$('#homeContent').addClass('pageOn').removeClass('pageOff');
};
} else {
$('#homeContent').addClass('pageOn').removeClass('pageOff');
}
$(window).on('popstate', function() {
var hash;
if(window.location.hash.includes("?")) {
hash = window.location.hash.substring(window.location.hash.indexOf('#') + 0,window.location.hash.indexOf('?'));
}else {
hash = window.location.hash;
};
if (hash=="#DRS" || hash=="#DRP" || hash=="#DFFI" || hash=="#DCI" || hash=="#DCP" || hash=="#DRP" || hash=="#DRMA" || hash=="#EICS" || hash=="#ORG"){
$(this).navigate({target: $(hash+'Content')});
if(window.location.hash.includes("?")) {
}else{
location.href = location.href+'?';
}
}else {
$(this).navigate({target: $('#homeContent')});
};
});
});
javascript
internet-explorer-11
ecmascript-7
Erik Grosskurth
fuente
fuente
window.location.hash
internet explorer 11?Respuestas:
Según la página de referencia de MDN ,
includes
no es compatible con Internet Explorer. La alternativa más simple es usarindexOf
, así:fuente
IE11 implementa String.prototype.includes, ¿por qué no usar el Polyfill oficial?
Fuente: fuente de polyfill
fuente
Agregar
import 'core-js/es7/array';
a mipolyfill.ts
solucionó el problema para mí.fuente
Tuve un problema similar con un proyecto angular. En mi polyfills.ts tuve que agregar ambos:
Además de habilitar todos los demás valores predeterminados de IE 11. (Vea los comentarios en polyfills.ts si usa angular)
Después de agregar estas importaciones, el error desapareció y mis datos de Object se completaron según lo previsto.
fuente
Al igual que en Internet Explorer, el método javascript "incluye" no es compatible, lo que lleva al error que se muestra a continuación
dijit.form.FilteringSelect TypeError: el objeto no admite la propiedad o el método 'incluye'
Así que he cambiado el método de cadena de JavaScript de "incluye" a "indexOf" como se muestra a continuación
fuente
He usado
includes
deLodash
los cuales es muy similar a la nativa.fuente
Estoy usando ReactJs y lo utilicé
import 'core-js/es6/string';
al principioindex.js
para resolver mi problema.También estoy usando
import 'react-app-polyfill/ie11';
para admitir la ejecución de React en IE11.https://github.com/facebook/create-react-app/blob/master/packages/react-app-polyfill/README.md
fuente
npm i --save core-js react-app-polyfill
core-js/es6
parece que ya no existe en v3, así que talimport 'core-js';
como se sugiere en Github .Esta pregunta y sus respuestas me llevaron a mi propia solución (con la ayuda de SO), aunque algunos dicen que no debes manipular los prototipos nativos:
Entonces Acabo de cambiar todo
.includes()
con.doesInclude()
y mi problema fue resuelto.fuente
.includes ()
funciona tanto en cadenas como en matrices. Susubstring()
solución solo funciona con cadenas y falla con las matrices. Como respondieron otras personas, usar enindexOf()
lugar desubstring()
es mejor porque esto funciona en ambos casos.