2016-03-25 15 views
7

मैं आईई के साथ एक संभावित बग में भाग गया हूं जहां जावास्क्रिप्ट को कॉल किया गया है। length फ़ंक्शन एक मान देता है जो 1 से बंद होता है जब स्ट्रिंग .toLocaleString() से ली गई थी।इंटरनेट एक्सप्लोरर रिटर्निंग स्ट्रिंग की गलत लंबाई

var d = new Date(); 
var locale = navigator.language; 
var month = d.toLocaleString(locale, { month: "long"}); 
// month.length will return the length of the month string +1 
//(eg: if month = "March", month.length will return 6.) 

दिलचस्प है, इसके बाद के संस्करण के कोड उदाहरण का अनुसरण के लिए (आईई में) सच वापस आ जाएगी:

month[0] == ""; 
month[1] == "M"; 
month[2] == "a"; 
month[3] == "r"; 
month[4] == "c"; 
month[5] == "h"; 

मेरी विशेष मामले में (महीने [0] "एम" होना चाहिए), यह एक समस्या पैदा कर रहा है जहां मुझे महीने में .slice() की आवश्यकता है। उदाहरण: यदि महीना मार्च है, तो आईई "मार्च" के बजाय month.slice(0,3) के लिए "मा" वापस कर देगा।

क्या यह आईई के साथ एक ज्ञात बग है? क्या इस समस्या के लिए कोई फिक्स और/या कामकाज है?

आईई और क्रोम/फ़ायरफ़ॉक्स/सफारी में fiddle चलाएं और ध्यान दें कि month.length आईई में गलत है।

मेरे पर्यावरण:

ओएस: विन सर्वर 2012 R2

IE संस्करण: 11.0.9600.18231 (अपडेट संस्करण: 11.0.29)

स्थान: अंग्रेजी/अमेरिका

+0

हमें अपना ओएस, वर्तमान लोकेल और ब्राउज़र संस्करण निर्माण दें। – Knu

+0

यह विचित्र है। मुझे एक ही परिणाम मिलता है। कोशिश की .trim(), और .replace (/ \ s + /, ""), लेकिन अभी भी –

+2

पर अतिरिक्त रिक्त वर्ण दिखा रहा है 'month.charCodeAt (0) 'का परिणाम क्या है? – apsillers

उत्तर

7

तो, मैंने इस पोस्ट पर ठोकर खाई toLocaleDateString error in IE 11

ऐसा प्रतीत होता है कि यह toLocaleDateString फ़ंक्शन के कारण आईई 11 में अतिरिक्त एलटीआर और आरटीएल वर्ण जोड़े गए हैं। टिप्पणियों में से एक ने रेगेक्स को उस फ़ंक्शन को प्रतिस्थापित किया जो मेरे लिए काम कर रहा है।

month.replace(/[^ -~]/g,''); 

.toLocaleDateString() करने के बाद इसे जोड़ने का प्रयास करें और इसे काम करना चाहिए। यह मेरे लिए काम किया।

आईई को तुच्छ करने के लिए सिर्फ एक और कारण है।

+2

भविष्य में पाठकों के लिए संबंधित [http://stackoverflow.com/questions/25574963/ies-tolocalestring-has-strange-characters-in-results) को भी जोड़ना चाहते हैं। – Chatoyancy

+0

"यह डिज़ाइन द्वारा है इसलिए आउटपुट टेक्स्ट अन्य टेक्स्ट के साथ संयोजित होने पर ठीक से बह जाएगा।" – Knu

+0

आपको बहुत बहुत धन्यवाद! मैंने toLocaleDateString() पर कॉल के बाद दिनांक की जांच करने के लिए एक रेगेक्स का उपयोग किया और यह अवांछित नहीं था कि यह IE11 -_- –

संबंधित मुद्दे