CDN

2013-07-02 5 views
5

मैं से अपने पन्ने पर बूटस्ट्रैप CSS लोड कर रहा हूँ से सीएसएस के लिए स्थानीय फ़ॉलबैक प्रदान करें CDN bootstrapcdn.comCDN

<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet"> 

मैं कैसे परीक्षण कर सकते हैं, तो स्टाइलशीट लोड किया गया था, और यदि नहीं एक स्थानीय फ़ॉलबैक प्रदान करते हैं?

I परीक्षण करने से पहले jQuery या अन्य पुस्तकालयों को लोड करने के लिए प्रतीक्षा करना नहीं चाहते हैं; मैं चाहता हूं कि सभी सीएसएस पहले पृष्ठ पर लोड हो जाएं।

+0

यह चुनौतीपूर्ण हो सकता है, क्योंकि मुझे लगता है कि * सीएसएस असीमित रूप से लोड करता है। – Pointy

+1

आप JQuery या अन्य संसाधनों को लोड नहीं करना चाहते हैं, लेकिन नीचे जो कोड मैंने साझा किया है वह एक शुद्ध जावास्क्रिप्ट कोड है और jQuery (मुझे लगता है) पर कोई निर्भरता नहीं है। जावास्क्रिप्ट का उपयोग किए बिना, मैं जो भी खोज रहा हूं उसे प्राप्त करने के किसी भी अन्य तरीके से नहीं जानता। बेशक, W3 spec के कुछ प्रकार के संशोधन जहां आप फॉलबैक लाइब्रेरी निर्दिष्ट कर सकते हैं - जो मुझे लगता है कि भविष्य में spec के लिए एक बहुत अच्छा अपडेट होगा। – smallworld

उत्तर

2

यही वह है जो मैंने अपनी आवश्यकताओं के लिए बनाया है। यदि यह आपकी आवश्यकताओं को पूरा करता है, तो बस फंक्शन को सुनिश्चित करें CssFileInclusion (फ़ाइल को जांचने के लिए, बूलियन मान)। आपको यह सुनिश्चित करने के लिए अपनी आवश्यकताओं के लिए इसे समायोजित करना होगा कि आप इस फ़ंक्शन में cssFileToCheck, fallbackCssFile प्रदान करते हैं।

/** 
* Checks the page for given CSS file name to see if it was already included within page stylesheets. 
* If it was, then this function does nothing else. If CSS file was not found among page stylesheets, 
* then this function will attempt to load the stylesheet by adding an HTML link tag to the document 
* HEAD section. You must also specify whether given cssFileToInclude is a relative path or an absolute path. 
*/ 
ensureCssFileInclusion = function(cssFileToInclude, isRelativePath) { 
    if (isRelativePath) { 
    if (!window.location.origin) { 
     cssFileToInclude = window.location.protocol+"//"+window.location.host + cssFileToInclude; 
    } 
    } 
    var styleSheets = document.styleSheets; 
    for (var i = 0, max = styleSheets.length; i < max; i++) { 
    if (styleSheets[i].href == cssFileToInclude) { 
     return; 
    } 
    } 
    // because no matching stylesheets were found, we will add a new HTML link element to the HEAD section of the page. 
    var link = document.createElement("link"); 
    link.rel = "stylesheet"; 
    link.href = cssFileToInclude; 
    document.getElementsByTagName("head")[0].appendChild(link); 
}; 
+0

क्या यह समस्या के बिना क्रॉस-ब्राउजर काम करता है? पेज लोड समय के साथ कोई समस्या? – BadHorsie

+0

हम अभी प्री-प्रोड में हैं, लेकिन यह फ़ंक्शन लगभग एक साल तक रहा है और हमने कुछ भी नहीं देखा है जो हमें चिंता करेगा। एक चीज जो मैं हमेशा उन लोगों को याद दिलाती हूं जो इस तरह की 30 एमएमएस प्रक्रियाओं के बारे में चिंतित हैं (या ऑप्टिमाइज़ करने का प्रयास करें) .... हम क्लाइंट मशीन पर बहुत ज्यादा जंक (जावास्क्रिप्ट/सीएसएस/इमेजेस इत्यादि) पैडल करते हैं, यह 20/30 एमएस एक चीज नहीं बदलेगा। दूसरा, अगर यह सर्वर पर 20/30ms था जो लाखों ग्राहकों को खानपान कर रहा है, तो मैं इसके बारे में सोच सकता हूं, लेकिन बहु-कोर प्रोसेसर और 4 + जीबी रैम वाले आधुनिक दिन के ग्राहक इसे संभालने में सक्षम हैं। – smallworld

+0

"क्या यह काम बिना समस्या के क्रॉस-ब्राउजर काम करता है?" ... अपने शुद्ध जावास्क्रिप्ट, जब तक आप जावास्क्रिप्ट-सक्षम ब्राउज़र को खानपान कर रहे हैं, मैं नहीं देख सकता कि यह क्यों काम नहीं करेगा! – smallworld

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