2011-09-09 13 views
6

जरूरत निम्न कोड के लिए विश्वसनीय क्रॉस-ब्राउज़र आईई संस्करण का पता लगाने हैयानी सशर्त टिप्पणियों स्पष्टीकरण

<!--[if lt IE 7 ]><body class="ie_6"><![endif]--> 
<!--[if IE 7 ]><body class="ie_7"><![endif]--> 
<!--[if IE 8 ]><body class="ie_8"><![endif]--> 
<!--[if IE 9 ]><body class="ie_9"><![endif]--> 
<!--[if (gt IE 9)|!(IE)]><!--> 
<body> 
<!--<![endif]--> 

क्या मुझे समझ नहीं आता, यही कारण है कि यह है working.Why सामान्य <body><body class="ie_9"> के बाद से अधिलेखित नहीं किया यह सिर्फ एक सामान्य टैग है, सभी ब्राउज़रों द्वारा पहचाना जाना चाहिए।

के बारे में क्या

<!--> 
    <body> 
    <!-- 
+0

आपने इसे स्वीकार करने के बाद, मेरे जवाब में एक संपादन में "जादू" के बारे में कुछ और बताया, इसलिए मैं इसे यह सुनिश्चित करने के लिए यहां डाल रहा हूं कि आप इसे देख सकें :) – Joe

उत्तर

11

आप शायद बदलने के लिए !(IE)(!IE)

इसके अलावा करने के लिए, "सामान्य" <body> टैग आप के बारे में बात कर रहे हैं एक सशर्त टिप्पणी में है चाहता हूँ जादू है। तथ्य यह है कि यह एक अलग लाइन पर है, इससे कोई फर्क नहीं पड़ता, यह अभी भी सशर्त टिप्पणी टैग के अंदर है, इसलिए इस तरह प्रभावित है।

सामान्य HTML टिप्पणियों का उपयोग करके आईई काम के लिए सशर्त टिप्पणियां <!-- --> इसलिए "झूठी" सशर्त के अंदर कोई भी कोड अभी टिप्पणी की गई है; <!-- <body class="ie6"> --> आईई के बाद इसका अपना वाक्यविन्यास है। इस प्रकार, गैर-आईई ब्राउज़र केवल एक टिप्पणी स्ट्रिंग देखते हैं, और आईई इसे निष्पादित करने के लिए एक कथन के रूप में व्यवहार करता है।

इस वजह से, केवल एक बॉडी टैग दिखाता है, और केवल वह ही उपयोग किया जाता है।

<!--[if (gt IE 9)|!(IE)]><!--> 
<body> 
<!--<![endif]--> 

आईई करने के लिए की


अधिक विवरण, इस का कहना है:

<if greater than ie9, or not ie> (ie conditional comment) 
<!--> (empty comment) (--> putting this here to stop SO ruining syntax highlighting :D) 
<body> 
<end if> (ie conditional comment) 

तुम क्यों समझ में नहीं आता है, तो पैरा "IE काम के लिए सशर्त टिप्पणियों से शुरू होने पढ़ा .. । "।

यह एक ही ब्लॉक, किसी भी अन्य ब्राउज़र के लिए इस तरह दिखता है:

<!--[if (gt IE 9)|!(IE)]><!--> (this is just one comment, containing the text "[if (gt IE 9)|!(IE)]><!") 
<body> 
<!--<![endif]--> (again, just one comment, containing "<![endif]") 
3
<!--[if (gt IE 9)|!(IE)]><!--> 
<body> 
<!--<![endif]--> 

का अर्थ है: वहाँ <body> ब्राउज़र संस्करण (gt) IE9 (ताकि, जैसे IE10) या से अधिक है ouput अगर यह आईई नहीं है।

चूंकि आईई 9 वर्तमान में नवीनतम संस्करण है, इसलिए यह शर्त किसी भी आईई द्वारा पूरा नहीं होती है।

चाल है कि पहली पंक्ति में -->, अन्य ब्राउज़र में टिप्पणी बंद हो जाएगा तो उनके लिए, <!--[if (gt IE 9)|!(IE)]><!--> सिर्फ एक सामान्य टिप्पणी (अंतिम पंक्ति पर <!-- के लिए एक ही) है।

लेकिन आईई <!--[if (gt IE 9)|!(IE)]> और <![endif]--> पार्स करेगा, और सशर्त टिप्पणी की सामग्री के रूप में <!--><body><!-- का इलाज करेगा। जिसका अर्थ है कि अगर स्थिति पूरी हो जाती है, तो यह एक खाली टिप्पणी, <body> टैग, और एक टिप्पणी की शुरुआत करता है।

एमएसडीएन के पास conditional comments के बारे में विस्तृत विवरण है।

<![if (gt IE 9)|!(IE)]> 
<p>Please upgrade to Internet Explorer version 8.</p> 
<![endif]> 

(हालांकि यह मान्य HTML नहीं है): यह आप निचले स्तर-पता चला सशर्त टिप्पणियाँ उपयोग करके एक ही प्राप्त कर सकते लगता है।

+0

' 'केवल एक सामान्य टैग होना चाहिए , संस्करण या निर्माण – wukong

+0

अच्छा जवाब के बावजूद, सभी ब्राउज़रों द्वारा पुन: संगठित किया जाना चाहिए। बस यह जोड़ने के लिए कि आपको अतिरिक्त टैग की आवश्यकता है '->' और ' chris5marsh

+0

'' ** ** ** ** ** ज्ञात नहीं – wukong

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