मैं इस समस्या की जांच कर रहा हूं जो कि जितना अधिक मैं गहराई से खो देता हूं उतना ही खराब हो जाता है।जावास्क्रिप्ट स्ट्रिंग स्प्लिट में नियमित अभिव्यक्ति, ब्राउज़र संगतता समस्या
मैं मासूम पर्याप्त शुरू कर दिया एचटीएमएल 'br' टैग पर एक स्ट्रिंग विभाजित करने के लिए इस अभिव्यक्ति का उपयोग करने की कोशिश कर:
T = captions.innerHTML.split(/<br.*?>/g);
इस उदाहरण के साथ हर ब्राउज़र (FF, सफारी, क्रोम) में काम करता है, IE7 और IE8 को छोड़कर इस तरह इनपुट पाठ:
is invariably subjective. <br />
The less frequently used warnings (Probably/Possibly) <br />
कृपया ध्यान दें कि उदाहरण के लिए पाठ से पहले '/' एक अंतरिक्ष शामिल है, और एक नई लाइन के पहले आता है।
निम्नलिखित हर ब्राउज़र में सभी HTML टैग से मेल खाएगी दोनों: (मेरे लिए कम से कम)
T = captions.innerHTML.split(/<.*?>/g);
T = captions.innerHTML.split(/<.+?>/g);
हालांकि, आश्चर्यजनक रूप से, इस एफएफ और क्रोम में काम नहीं करता है:
T = captions.innerHTML.split(/<br.+?>/g);
संपादित करें:
यह (नीचे दिए गए प्रतिक्रियाओं में कई बार सुझाया गया है) आईई 7 या 8:
पर काम नहीं करता हैT = captions.innerHTML.split(/<br[^>]*>/g);
(यह क्रोम और एफएफ पर काम किया है।)
मेरा प्रश्न है: क्या किसी के ऊपर 'br' टैग से मिलान करने के एक अभिव्यक्ति है कि सभी वर्तमान ब्राउज़रों में काम करता है पता है (लेकिन अन्य नहीं HTML टैग) । और क्या कोई पुष्टि कर सकता है कि उपरोक्त अंतिम उदाहरण वैध मिलान होना चाहिए क्योंकि '>' से पहले उदाहरण टेक्स्ट में दो वर्ण मौजूद हैं।
पीएस - मेरा डॉक्टरेट एचटीएमएल संक्रमणकालीन है।
संपादित करें:
मुझे लगता है कि मैं सबूत हैं इस string.split() IE पर व्यवहार के लिए विशिष्ट है, और सामान्य रूप में regex नहीं। इस समस्या को देखने के लिए आपको split() का उपयोग करना होगा। मुझे एक परीक्षण मैट्रिक्स भी मिला है जो आईई पर चलाए जाने पर विभाजन() परीक्षण मामलों के लिए लगभग 30% की विफलता दर दिखाता है। एक ही परीक्षण पर एफएफ और क्रोम 100% पारित कर दिया:
http://stevenlevithan.com/demo/split.cfm
अब तक, मैं अभी भी नहीं IE के लिए एक समाधान है, और है कि परीक्षण मैट्रिक्स इस मामले का समाधान नहीं होता के लेखक द्वारा प्रदान की पुस्तकालय मिल गया है।
पीपीएस - मैं वर्तमान परीक्षण आईई 6 या ओपेरा नहीं हूं, लेकिन यह प्रासंगिक होने पर इन पर चर्चा करने में संकोच न करें। –