2012-02-02 10 views
30

में सशर्त टिप्पणियाँ एक Haml दस्तावेज़ में, मेरे पास है: आईई (में ठीक से और शायद फ़ायरफ़ॉक्स और क्रोम में"[आईई!]" Haml

/[if IE] 
    This is IE 
/[if !IE] 
    This is not IE 

पहले सशर्त मूल्यांकन करता है, के रूप में "यह आईई है" करता है उन ब्राउज़रों में प्रस्तुत नहीं करें)। हालांकि, दूसरा सशर्त फ़ायरफ़ॉक्स या क्रोम में ठीक से मूल्यांकन नहीं करता है, क्योंकि "यह आईई नहीं है" प्रदान नहीं किया जाता है।

मुझे लगता है कि मैंने कुछ गलत किया है। कोई विचार?

+0

वास्तविक सृजित HTML क्या है? –

+0

उत्तर

91

आईई सशर्त टिप्पणियों का उपयोग करते समय, आपको दो अलग-अलग प्रकार के बारे में पता होना चाहिए। सबसे पहले, जब संपूर्ण सामग्री (<!-- और --> के बीच) एक HTML टिप्पणी के अंदर है, लेकिन आईई हालत की वजह से इसे पढ़ा होगा:

<!--[if IE]> 
    This is inside a HTML comment, so most browsers will ignore it, but IE will 
    interpret it. 
<![endif]--> 

अन्य प्रकार नहीं एक भी टिप्पणी है, लेकिन कुछ सामग्री ब्राउज़रों, देखेंगे दो टिप्पणियों से घिरा हुआ कि IE इसे अनदेखा कर देगा:

<!--[if !IE]> --> 
    This is not a HTML comment, so browsers should see it, but IE will ignore it. 
<!-- <![endif]--> 

(एसओ का कोड हाइलाइटिंग अंतर से पता चलता - शीर्ष एक चीज में ग्रे है, क्योंकि यह सब टिप्पणी है, लेकिन यह एक में पाठ गहरा है क्योंकि यह एक टिप्पणी नहीं है)।

The Haml support for IE conditional comments केवल पहली तरह के निर्माण के लिए उपयोगी है, क्योंकि यह ब्लॉक टिप्पणियां बनाने के लिए वाक्यविन्यास का हिस्सा है।

<!--[if !IE]> 
    This is inside a HTML comment, so other browsers will ignore it. 
    IE will also ignore it, as the conditional states !IE. 
    So everything ignores it. 
<![endif]--> 

जो प्रभावी रूप से बिना शर्त टिप्पणी है: आप दूसरी तरह के लिए उपयोग (आप यहाँ) के रूप में की कोशिश यदि आप की तरह कुछ मिलता है।

%p Some other content 
<!--[if !IE]> --> 
%p 
    Here's some content that shouldn't appear in IE. 
<!-- <![endif]--> 

तुम भी Haml surround helper का उपयोग कर सकता, इस तरह::

आदेश Haml में [if !IE] प्रकार का उपयोग करने के लिए, आप शायद इसे मैन्युअल रूप से करना होगा

%p Some other content 
=surround '<!--[if !IE]> -->', '<!-- <![endif]-->' do 
    %p 
    Here's some content that shouldn't appear in IE. 

(यदि आप रेल का उपयोग कर रहे हैं तो आपको स्ट्रिंग्स पर html_safe का उपयोग करना होगा, यानी surround '<!--[if !IE]> -->'.html_safe, '<!-- <![endif]-->'.html_safe do)।

यदि आप इसका बहुत उपयोग कर रहे हैं, तो यह एक सहायक विधि बनाने के लायक हो सकता है जो इस कॉल को surround पर लपेटता है।

+2

यह एक बढ़िया जवाब है नहीं है। मुझे आश्चर्य है कि इसके लिए आपको अधिक उत्साह नहीं मिला है। +1! – sscirrus