Я проверяю URL, чтобы увидеть, содержит ли он или нет ?
в нем для управления состоянием всплывающего хэша в окне. Все остальные браузеры не имеют проблем, только IE.
Отладчик выдает мне эту ошибку, когда я пытаюсь загрузить таким образом:
Объект не поддерживает свойство или метод «
includes
»
Я не получаю ошибку при загрузке страницы через popstate.
$(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
Эрик Гросскурт
источник
источник
window.location.hash
в Internet Explorer 11?Ответы:
Согласно справочной странице MDN ,
includes
не поддерживается в Internet Explorer. Простейшая альтернатива - использоватьindexOf
вот так:источник
IE11 реализует String.prototype.includes, так почему бы не использовать официальный Polyfill?
Источник: полифилл источник
источник
Добавление
import 'core-js/es7/array';
к моемуpolyfill.ts
исправило проблему для меня.источник
У меня была похожая проблема с Angular-проектом. В моем polyfills.ts я должен был добавить оба:
В дополнение к включению всех остальных IE 11 по умолчанию. (См. Комментарии в polyfills.ts, если используется угловая)
После добавления этого импорта ошибка исчезла, и данные моего объекта заполнились, как и предполагалось.
источник
Как и в Internet Explorer, метод javascript «include» не поддерживает, что приводит к ошибке, как показано ниже
dijit.form.FilteringSelect TypeError: Объект не поддерживает свойство или метод «include»
Поэтому я изменил строковый метод JavaScript с «include» на «indexOf», как показано ниже
источник
Я использовал
includes
отLodash
которого действительно похожа на родную.источник
Я использую ReactJs и использовал
import 'core-js/es6/string';
в начале,index.js
чтобы решить мою проблему.Я также использую
import 'react-app-polyfill/ie11';
для поддержки запуска React в IE11.https://github.com/facebook/create-react-app/blob/master/packages/react-app-polyfill/README.md
источник
npm i --save core-js react-app-polyfill
core-js/es6
кажется, больше не существует в v3, так же,import 'core-js';
как предложено в Github .Этот вопрос и его ответы привели меня к моему собственному решению (с помощью SO), хотя некоторые говорят, что вы не должны вмешиваться в нативные прототипы:
Тогда я просто заменил все
.includes()
на.doesInclude()
и моя проблема была решена.источник
.includes ()
работает как со строками, так и с массивами. Вашеsubstring()
решение работает только со строками и не работает с массивами. Как ответили другие люди, лучше использоватьindexOf()
вместо,substring()
потому что это работает в обоих случаях.