2012-12-10 26 views
6

के आधार पर एक जावास्क्रिप्ट फ़ाइल और सीएसएस फ़ाइल लोड करें जैसे शीर्षक में।उपयोगकर्ता एजेंट

मुझे दो फाइलें मिलीं: एक जावास्क्रिप्ट फ़ाइल है और एक सीएसएस फ़ाइल है। और यदि उपयोगकर्ता-एजेंट एक आईपैड है, तो मैं उन फ़ाइलों को लोड करना चाहता हूं - लेकिन केवल जब उपयोगकर्ता-एजेंट आईपैड है। तो दो लाइनों के नीचे केवल तभी लोड किया जाता है जब उपयोगकर्ता-एजेंट एक आईपैड होता है। मैं कैसे प्राप्त कर सकते हैं कि

<link rel="stylesheet" href="/c/dropkick.css" type="text/css"/> 
<script src="/s/jquery.dropkick-1.0.0.js" type="text/javascript"></script> 

उत्तर

10
if (navigator.userAgent.match(/iPad/i) != null){ // may need changing? 
    var js = document.createElement('script'); 
    js.type = "text/javascript"; 
    js.src = "/s/jquery.dropkick-1.0.0.js"; 

    var css = document.createElement('link'); 
    css.type = "text/css"; 
    css.rel = "stylesheet"; 
    css.href = "/c/dropkick.css"; 

    var h = document.getElementsByTagName('head')[0]; 
    h.appendChild(js); 
    h.appendChild(css); 
} 

या जो कुछ भी एक iPad के लिए User-Agent शीर्षक में होगा।

संदर्भ:

+1

मैं हमेशा आईपैड –

+0

@barts का पता लगाने के लिए 'navigator.userAgent.match (/ iPad/i)! = Null' का उपयोग करता हूं: नोट किया गया, जानकारी के लिए धन्यवाद। मैं प्रतिबिंबित करने के लिए अपना जवाब अपडेट करूंगा। –

+0

व्यापक उत्तर के लिए धन्यवाद दोस्तों। उसने वास्तव में मेरी मदद की :) – born2fr4g

2

आप document.createElement उपयोग कर सकते हैं link और script तत्वों को बनाने के, और फिर दस्तावेज़ करने के लिए उन्हें संलग्न (उदाहरण के लिए, उन्हें document.getElementsByTagName('head')[0] या इसी तरह से अटैचमेंट)।

This answer इतने पर यहाँ पता चलता है कि तुम सिर्फ navigator.userAgent क्षेत्र में स्ट्रिंग "ipad" की तलाश द्वारा एक iPad dtect कर सकते हैं। बेशक, उपयोगकर्ता एजेंट फ़ील्ड को धोखा दिया जा सकता है।

उदाहरण के लिए

तो:

<script> 
(function() { 
    var elm, head; 

    if (navigator.userAgent.indexOf("ipad") !== -1) { 
     head = document.getElementsByTagName('head')[0] || document.body || document.documentElement; 

     elm = document.createElement('link'); 
     elm.rel = "stylesheet"; 
     elm.href = "/c/dropkick.css"; 
     head.appendChild(elm); 

     elm = document.createElement('script'); 
     elm.src = "/s/jquery.dropkick-1.0.0.js"; 
     head.appendChild(elm); 
    } 
})(); 
</script> 

... लेकिन यह है कि ऑफ-द-कफ, अपरीक्षित है।

(ध्यान दें कि या तो link या script पर प्रकार डाल करने के लिए कोई कारण नहीं है कि;। link के मामले में, प्रकार प्रतिक्रिया की सामग्री प्रकार से आता है script के मामले में, डिफ़ॉल्ट जावास्क्रिप्ट है।)

+0

हालांकि मैं इस बात से सहमत आप प्रकार निर्दिष्ट करने _need_ नहीं है, मैं 'foo.png के पुराने दिनों से चित्र मिलता है जिसमें शीर्षलेख में 'सामग्री-प्रकार: टेक्स्ट/जावास्क्रिप्ट' शामिल है। मुझे लगता है कि मुझे लगता है कि कई मामलों में स्पष्ट से स्पष्ट सुरक्षित है। –

+0

@BradChristie: ठीक है, लेकिन 'rel'' पर 'टाइप'' टाइप करें जब 'rel =" स्टाइलशीट "' स्पष्ट नहीं है, यह एक नो-ऑप है, देखें [यहां] (http://www.w3.org/ टीआर/एचटीएमएल 5/द-लिंक-element.html # एटीआर-लिंक-टाइप) और [यहां] (http://www.w3.org/TR/html5/links.html#link-type- स्टाइलशीट)। इसी प्रकार 'स्क्रिप्ट' पर, डिफ़ॉल्ट है और ** हमेशा ** जावास्क्रिप्ट रहा है, आईई 5 पर भी जब माइक्रोसॉफ्ट ने सोचा कि वे वीबीस्क्रिप्ट का उपयोग करके प्रतिस्पर्धा कर सकते हैं। :-) –

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