Saya memeriksa URL untuk melihat apakah URL itu berisi atau termasuk ?
di dalamnya untuk mengontrol status pop hash di jendela. Semua browser lain tidak mengalami masalah, hanya IE.
Debugger memberi saya kesalahan ini ketika saya mencoba memuat dengan cara ini:
Objek tidak mendukung properti atau metode '
includes
'
Saya tidak mendapatkan kesalahan ketika saya memuat halaman melalui 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
Erik Grosskurth
sumber
sumber
window.location.hash
di internet explorer 11?Jawaban:
Menurut halaman referensi MDN ,
includes
tidak didukung di Internet Explorer. Alternatif paling sederhana adalah menggunakanindexOf
, seperti ini:sumber
IE11 tidak mengimplementasikan String.prototype.includes jadi mengapa tidak menggunakan Polyfill resmi?
Sumber: sumber polyfill
sumber
Menambahkan
import 'core-js/es7/array';
untuk sayapolyfill.ts
tetap masalah bagi saya.sumber
Saya memiliki masalah serupa dengan proyek Angular. Di polyfills.ts saya, saya harus menambahkan keduanya:
Selain mengaktifkan semua default IE 11 lainnya. (Lihat komentar di polyfills.ts jika menggunakan sudut)
Setelah menambahkan impor ini kesalahan hilang dan data Object saya terisi sebagaimana dimaksud.
sumber
Seperti di Internet Explorer, metode javascript "termasuk" tidak mendukung yang mengarah ke kesalahan seperti di bawah ini
dijit.form.FilteringSelect TypeError: Objek tidak mendukung properti atau metode 'termasuk'
Jadi saya telah mengubah metode string JavaScript dari "include" menjadi "indexOf" seperti di bawah ini
sumber
Saya telah menggunakan
includes
dariLodash
yang benar-benar mirip dengan asli.sumber
Saya menggunakan ReactJs dan digunakan
import 'core-js/es6/string';
pada awalindex.js
untuk menyelesaikan masalah saya.Saya juga menggunakan
import 'react-app-polyfill/ie11';
untuk mendukung menjalankan Bereaksi di IE11.https://github.com/facebook/create-react-app/blob/master/packages/react-app-polyfill/README.md
sumber
npm i --save core-js react-app-polyfill
core-js/es6
sepertinya tidak ada lagi di v3, jadiimport 'core-js';
seperti yang disarankan di Github .Pertanyaan ini dan jawabannya membawa saya ke solusi saya sendiri (dengan bantuan dari SO), meskipun beberapa orang mengatakan Anda tidak boleh mengutak-atik prototipe asli:
Kemudian saya mengganti semua
.includes()
dengan.doesInclude()
dan masalah saya terpecahkan.sumber
.includes ()
bekerja pada string dan array.substring()
Solusi Anda hanya berfungsi dengan string dan gagal dengan array. Seperti yang dijawab oleh orang lain, menggunakanindexOf()
bukansubstring()
lebih baik karena ini berfungsi dalam kedua kasus.