IE11 में `window.location.hash.includes` का उपयोग करके" ऑब्जेक्ट संपत्ति या विधि का समर्थन नहीं करता है "शामिल है


173

मैं यह देखने के लिए URL की जाँच कर रहा हूँ कि इसमें ?विंडो में हैश पॉप स्थिति को नियंत्रित करने के लिए इसमें सम्‍मिलित है या शामिल है । अन्य सभी ब्राउज़रों में कोई समस्या नहीं है, केवल IE।

डीबगर मुझे यह त्रुटि देता है जब मैं इस तरह से लोड करने की कोशिश करता हूं:

ऑब्जेक्ट संपत्ति या विधि का समर्थन नहीं करता है ' includes'

जब मैं पृष्ठ को पॉपस्टेट के माध्यम से लोड करता हूं तो मुझे कोई त्रुटि नहीं मिलती है।

    $(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')});
            };
        });
});

window.location.hashइंटरनेट एक्सप्लोरर 11 का मूल्य क्या है ?
बजे

जवाबों:


242

एमडीएन संदर्भ पृष्ठ के अनुसार , includesइंटरनेट एक्सप्लोरर पर समर्थित नहीं है। इस indexOfतरह का उपयोग करने के लिए सबसे सरल विकल्प है :

if(window.location.hash.indexOf("?") >= 0) {
    ...
}

1
ठीक है, अब मुझे यह काम करने के लिए नहीं मिल सकता है अगर (window.location.hash.indexOf ("?")> = 0) {// कुछ नहीं करना है} बाकी {location.href = location.href + '?' }
एरिक ग्रॉसकुरथ

मुझे एक जोड़ने की आवश्यकता है url के अंत में यदि url में पहले से कोई नहीं है
Erik Grosskurth

1
मुझे पता है कि यह एक पुराना प्रश्न और उत्तर है, लेकिन String.prototype.includes मेरे लिए विंडोज 10 IE 11. पर काम कर रहा है
troxwalt

2
@troxwalt यह सुनने में अच्छा है, लेकिन यह अभी भी विंडोज 7 IE11 पर काम नहीं करता है!
nevada_scout

यदि आप रिएक्ट आईएनजी हैं, तो आप
पॉलीफिल

58

IE11 String.prototype.includes को लागू करता है इसलिए आधिकारिक पॉलीफ़िल का उपयोग क्यों नहीं किया जाता है?

  if (!String.prototype.includes) {
    String.prototype.includes = function(search, start) {
      if (typeof start !== 'number') {
        start = 0;
      }

      if (start + search.length > this.length) {
        return false;
      } else {
        return this.indexOf(search, start) !== -1;
      }
    };
  }

स्रोत: पॉलीफिल स्रोत


1
आप यहां पाए गए कोर-जेएस से पॉलीफिल का उपयोग भी कर सकते हैं: github.com/zloirock/core-js#stage-4-proposals
डेविड बैरेटो


36

import 'core-js/es7/array';मेरे लिए मेरे polyfill.tsफिक्स्ड मुद्दे को जोड़ना ।


यह लंबे समय से पहले पोस्ट किया गया था, लेकिन हो सकता है कि यह नए ढांचे पर किसी की मदद कर सकता है लेकिन मुझे लगता है कि चयनित उत्तर को विशेष उपयोग के मामलों के बाहर किसी भी चीज के लिए पर्याप्त होना चाहिए।
एरिक ग्रॉसकुर्थ

1
आयात 'कोर-जेएस / एस / सरणी'; 2020 तक
टाइमहैच 22

14

मुझे एक कोणीय परियोजना के साथ एक समान मुद्दा था। मेरे पॉलीफ़िल्स में। मुझे दोनों को जोड़ना था:

    import "core-js/es7/array";
    import "core-js/es7/object";

इसके अलावा अन्य सभी IE 11 चूक को सक्षम करने के लिए। (कोणीय का उपयोग करते हुए polyfills.ts में टिप्पणियां देखें)

इन आयातों को जोड़ने के बाद त्रुटि दूर हो गई और मेरा ऑब्जेक्ट डेटा इरादा के अनुसार आबाद हो गया।


यह मेरे लिए काम कर रहा है। वैसे भी उन दो आयात क्या करता है ?. और आयात में क्या त्रुटि शामिल है? या दोनों के एम शामिल त्रुटि के लिए कर रहे हैं?
इमज़ोशुआ

चूंकि IE11 अब Microsoft द्वारा फ़ीचर अपडेट प्राप्त नहीं कर रहा है, जावास्क्रिप्ट कार्यान्वयन दिनांकित है और केवल ES5 के लिए तरीकों के लिए समर्थन है। इन 2 फ़ाइलों को आयात करके, आप ऐरे और ऑब्जेक्ट थ्रू ES7 के लिए पॉलीफ़िल स्क्रिप्ट जोड़ रहे हैं जिसमें 'शामिल' विधि शामिल है।
bsheps

5

जैसा कि इंटरनेट एक्सप्लोरर में, जावास्क्रिप्ट विधि "शामिल है" का समर्थन नहीं करता है जो नीचे के रूप में त्रुटि के लिए अग्रणी है

dijit.form.FilteringSelect TypeError: ऑब्जेक्ट संपत्ति या विधि का समर्थन नहीं करता है 'में शामिल हैं'

इसलिए मैंने नीचे के रूप में "स्ट्रिंग" से "इंडेक्सऑफ" में जावास्क्रिप्ट स्ट्रिंग विधि को बदल दिया है

//str1 doesn't match str2 w.r.t index, so it will try to add object
var str1="acd", str2="b";
if(str1.indexOf(str2) == -1) 
{
  alert("add object");
}
else 
{
 alert("object not added");
}


1

मैं अपनी समस्या को हल import 'core-js/es6/string';करने के index.jsलिए रिएक्टजेस का उपयोग कर रहा हूं और शुरुआत में उपयोग कर रहा हूं ।

मैं import 'react-app-polyfill/ie11';IE11 में रिएक्ट चलाने का समर्थन करने के लिए भी उपयोग कर रहा हूं ।

प्रतिक्रिया, एप्लिकेशन के polyfill

इस पैकेज में विभिन्न ब्राउज़रों के लिए पॉलीफिल शामिल हैं। इसमें न्यूनतम आवश्यकताएं और आमतौर पर क्रिएट रिएक्ट ऐप परियोजनाओं द्वारा उपयोग की जाने वाली भाषा की विशेषताएं शामिल हैं।

https://github.com/facebook/create-react-app/blob/master/packages/react-app-polyfill/README.md


1
मैंने IE11 कंसोल में विफल सभी कार्यों को मैन्युअल रूप से पॉलीफ़िल करना शुरू कर दिया है ... वास्तव में आपके समय सेवर उत्तर की सराहना करते हैं। अपने पैकेज में एक बार उन 2 पैकेजों को जोड़ने के लिए npm i --save core-js react-app-polyfill
Json

Btw, core-js/es6अब v3 में मौजूद नहीं है, इसलिए import 'core-js';जैसा कि गितुब में सुझाव दिया गया है
CPHPython 10

0

इस सवाल और इसके जवाब ने मुझे अपने समाधान के लिए प्रेरित किया (एसओ की मदद से), हालांकि कुछ का कहना है कि आपको मूल प्रोटोटाइप के साथ छेड़छाड़ नहीं करनी चाहिए:

  // IE does not support .includes() so I'm making my own:
  String.prototype.doesInclude=function(needle){
    return this.substring(needle) != -1;
  }

तो फिर मैं तो बस सब की जगह .includes()के साथ .doesInclude()और मेरी समस्या हल किया गया था।


2
.includes ()स्ट्रिंग्स और सरणियों दोनों पर काम करता है। आपका substring()समाधान केवल तारों के साथ काम करता है और सरणियों के साथ विफल होता है। जैसा कि अन्य लोगों द्वारा उत्तर दिया गया है, indexOf()इसके बजाय का उपयोग करना substring()बेहतर है क्योंकि यह दोनों मामलों में काम करता है।
मेमेत ओलसेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.