2009-04-13 18 views
9

मैं एक वेब ऐप बना रहा हूं जो साइट पर AJAX कार्यक्षमता जोड़ने के लिए रेल निर्मित अंतर्निहित सहायक कार्यों का उपयोग करता है। मैं नहीं चाहता कि उपयोगकर्ता जेएस के बिना ऐप का उपयोग करने में सक्षम हो क्योंकि यह ठीक से काम नहीं करेगा।रेल पर रूबी, जावास्क्रिप्ट का पता लगाने

मुझे इसे रोकने में सक्षम होना चाहिए। मैं उपयोगकर्ता को जेएस के बिना अपने किसी भी पेज को लोड करने से रोकने के बारे में कैसे जा सकता हूं?

मैंने अपने लेआउट में एक टैग का उपयोग करने का प्रयास किया है। यह जेएस की अनुपस्थिति का पता लगाता है लेकिन फिर भी विचार प्रस्तुत करता है। उपज के चारों ओर स्क्रिप्ट टैग डालने से किसी भी दृश्य को प्रस्तुत करने से रोकता है।

यह कैसे करें इस पर कोई विचार है?

उत्तर

21

आपके पास head तत्व में noscript ब्लॉक हो सकता है जिसमें मेटा रीफ्रेश टैग है। उदाहरण: स्पष्ट करने के लिए, noscript टैग केवल चलाता है यदि जावास्क्रिप्ट उपयोगकर्ता के लिए बंद कर दिया है:

<head> 
    <!-- title, scripts, css etc go here --> 
    <noscript> 
     <meta http-equiv="refresh" content="2;url=http://yoursite.com/nojswarning.html"> 
    </noscript> 
</head> 

आप मेटा रिफ़्रेश के बारे में अधिक पढ़ सकते हैं here

आशा इस

संपादित मदद करता है। तो इस मामले में यदि जेएस बंद कर दिया गया है तो उपयोगकर्ता को http://yoursite.com/nojswarning.html पर रीडायरेक्ट कर दिया जाएगा। बेशक आप इसे किसी भी साइट पर किसी भी पेज पर बदल सकते हैं।

+0

धन्यवाद, महान पोस्ट, पूरी तरह से काम किया। –

2

सरल उत्तर जेएस के माध्यम से संपूर्ण ऐप लोड होना है। इस तरह, ऐप किसी ऐसे व्यक्ति के लिए कभी नहीं दिखाएगा जिसने जेएस सक्षम किया है।

एक विकल्प आपके पृष्ठ को आईफ्रेम के साथ शुरू करना होगा, जो जेएस-चेकिंग पृष्ठ पर लोड होता है। सभी पृष्ठ उपयोगकर्ता को जेएस के माध्यम से ऐप के सही यूआरएल पर रीडायरेक्ट करता है। इस प्रकार, यदि उपयोगकर्ता के पास जेएस नहीं है, तो उन्हें रीडायरेक्ट नहीं किया जाएगा (और आप उन्हें सूचित कर सकते हैं कि उन्हें < नोस्क्रिप्ट> टैग के साथ जेएस की आवश्यकता है)। (मैं एक आईफ्रेम का उपयोग करने के लिए कहता हूं ताकि आप गैर-जेएस उपयोगकर्ताओं को ऐप पर जाने के लिए एक आसान यूआरएल न दें।)

0

<noscript></noscript> काम करने लगते हैं। मैं डिफॉल्ट को एक ओवरले के साथ एक छोटा लोडर बना दूंगा, और यदि क्लाइंट जावास्क्रिप्ट का समर्थन नहीं करता है, तो जावास्क्रिप्ट लोडर को कभी छिपा नहीं देगा। और <noscript> टैग में सामग्री ओवरले के साथ दिखाई देगी।

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