मेरे पास एक सरल और लचीला समाधान है, कुछ हद तक विल के समान है (लेकिन वैध HTML होने के अतिरिक्त लाभ के साथ):
शरीर के तत्व को "jsOff" का एक वर्ग दें। इसे जावास्क्रिप्ट से निकालें (या बदलें)। सीएसएस को "jsOly" के वर्ग के साथ मूल तत्व के साथ "jsOnly" के वर्ग के साथ किसी भी तत्व को छिपाने के लिए है।
इसका मतलब यह है कि यदि जावास्क्रिप्ट सक्षम है, तो "jsOff" वर्ग को शरीर से हटा दिया जाएगा। इसका मतलब यह होगा कि "jsOnly" के वर्ग वाले तत्वों के पास "jsOff" के वर्ग के साथ माता-पिता नहीं होंगे और इसलिए सीएसएस चयनकर्ता से नहीं होगा जो उन्हें छुपाता है, इस प्रकार उन्हें दिखाया जाएगा।
यदि जावास्क्रिप्ट अक्षम है, तो "jsOff" वर्ग को निकाय से हटाया नहीं जाएगा। "JsOnly" के साथ तत्वों जाएगा "jsOff" के साथ एक माता पिता है और इसलिए होगा CSS चयनकर्ता कि उन्हें खाल, इस तरह वे छिपा दिया जाएगा मेल खाते हैं।
यहाँ कोड है:
<html>
<head>
<!-- put this in a separate stylesheet -->
<style type="text/css">
.jsOff .jsOnly{
display:none;
}
</style>
</head>
<body class="jsOff">
<script type="text/javascript">
document.body.className = document.body.className.replace('jsOff','jsOn');
</script>
<noscript><p>Please enable JavaScript and then refresh the page.</p></noscript>
<p class="jsOnly">I am only shown if JS is enabled</p>
</body>
</html>
यह मान्य HTML है। यह आसान है। यह लचीला है।
बस "jsOnly" वर्ग को किसी भी तत्व में जोड़ें जिसे आप केवल तब प्रदर्शित करना चाहते हैं जब JS सक्षम हो।
कृपया ध्यान दें कि "jsOff" क्लास को हटाने वाले जावास्क्रिप्ट को बॉडी टैग के अंदर जल्दी से जल्दी निष्पादित किया जाना चाहिए। इसे पहले निष्पादित नहीं किया जा सकता है, क्योंकि बॉडी टैग अभी तक नहीं होगा। इसे बाद में निष्पादित नहीं किया जाना चाहिए क्योंकि इसका मतलब होगा कि "jsOnly" वर्ग वाले तत्व अभी दिखाई नहीं दे सकते हैं (क्योंकि वे सीएसएस चयनकर्ता से मेल खाएंगे जो उन्हें तब तक छुपाता है जब तक कि "jsOff" वर्ग को शरीर तत्व से हटा नहीं दिया जाता)।
यह js-only स्टाइलिंग (जैसे .jsOn .someClass{}
) और no-js-only स्टाइलिंग (जैसे .jsOff .someOtherClass{}
) के लिए एक तंत्र भी प्रदान कर सकता है । आप इसका उपयोग करने के लिए एक विकल्प प्रदान कर सकते हैं <noscript>
:
.jsOn .noJsOnly{
display:none;
}