यहाँ कुछ मुद्दे हैं। सबसे पहले, आपके द्वारा निर्दिष्ट async लोड विधि:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('jquery', '1.3.1');
google.setOnLoadCallback(function() {
// do stuff
});
</script>
मुद्दों की एक जोड़ी है। स्क्रिप्ट टैग पृष्ठ लोड को तब रोकते हैं जब वे पुनर्प्राप्त होते हैं (यदि आवश्यक हो)। अब अगर वे लोड करने में धीमे हैं तो यह बुरा है लेकिन jQuery छोटा है। उपरोक्त विधि के साथ वास्तविक समस्या यह है कि क्योंकि jquery.js लोड कई पृष्ठों के लिए स्वतंत्र रूप से होता है, वे लोडिंग और रेंडर को समाप्त कर देंगे, इससे पहले कि jquery ने लोड किया है इसलिए आपके द्वारा किया गया कोई भी jquery स्टाइल उपयोगकर्ता के लिए एक दृश्यमान परिवर्तन होगा ।
दूसरा तरीका है:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
कुछ सरल उदाहरणों को आज़माएं, एक साधारण तालिका है और कोशिकाओं की पृष्ठभूमि को setOnLoadCallback () विधि बनाम $ (दस्तावेज़) .ready () के साथ स्थैतिक jquery.min.js लोड के साथ पीले रंग में बदलें। दूसरी विधि में कोई ध्यान देने योग्य झिलमिलाहट नहीं होगी। पहली वसीयत। व्यक्तिगत रूप से मुझे लगता है कि यह एक अच्छा उपयोगकर्ता अनुभव नहीं है।
एक उदाहरण के रूप में इसे चलाएं:
<html>
<head>
<title>Layout</title>
<style type="text/css">
.odd { background-color: yellow; }
</style>
</head>
<body>
<table>
<tr><th>One</th><th>Two</th></tr>
<tr><td>Three</td><td>Four</td></tr>
<tr><td>Five</td><td>Six</td></tr>
<tr><td>Seven</td><td>Nine</td></tr>
<tr><td>Nine</td><td>Ten</td></tr>
</table>
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.3.1");
google.setOnLoadCallback(function() {
$(function() {
$("tr:odd").addClass("odd");
});
});
</script>
</body>
</html>
आप (को) टेबल को दिखाई देना और फिर पंक्तियों का पीला हो जाना।
Google.load () विधि के साथ दूसरी समस्या यह है कि यह केवल सीमित श्रेणी की फ़ाइलों को होस्ट करता है। यह बहुत ही प्लग-इन निर्भर होने के कारण jquery के लिए एक समस्या है। यदि आप कोशिश करते हैं और <script src="...">
टैग के साथ एक jquery प्लगइन शामिल करते हैं और google.load()
प्लग-इन शायद "jQuery के परिभाषित नहीं है" के संदेशों के साथ विफल हो जाएगा क्योंकि यह अभी तक लोड नहीं हुआ है। मैं वास्तव में इसके आसपास कोई रास्ता नहीं देखता।
तीसरी समस्या (किसी भी विधि के साथ) यह है कि वे एक बाहरी भार हैं। यह मानते हुए कि आपके पास कुछ प्लगइन्स हैं और आपका स्वयं का जावास्क्रिप्ट कोड है, आप अपने जावास्क्रिप्ट को लोड करने के लिए न्यूनतम दो बाहरी अनुरोधों पर निर्भर हैं। आप शायद बेहतर हो रहे हैं jquery, सभी प्रासंगिक प्लग-इन और अपने स्वयं के कोड और एक minified फ़ाइल में डाल रहे हैं।
से होस्टिंग के लिए चाहिए कि आप गूगल के उपयोग अजाक्स पुस्तकालय एपीआई? :
लोड समय के अनुसार, आप वास्तव में दो स्क्रिप्ट लोड कर रहे हैं - jsapi स्क्रिप्ट और म्यूटूल स्क्रिप्ट (ऊपर से संपीड़ित संस्करण)। ताकि एक के बजाय दो कनेक्शन हों। मेरे अनुभव में, मैंने पाया कि लोड करने का समय वास्तव में मेरे अपने व्यक्तिगत साझा सर्वर से लोड करने की तुलना में 2-3 गुना धीमा था, भले ही यह Google से आ रहा था, और संकुचित फ़ाइल का मेरा संस्करण Google की तुलना में K का एक युगल था। यह, फ़ाइल लोड होने के बाद भी और (संभवतः) कैश्ड। इसलिए मेरे लिए, चूंकि बैंडविड्थ ज्यादा मायने नहीं रखती, इसलिए कोई फर्क नहीं पड़ता।
अंत में आपके पास एक पेरानॉयड ब्राउज़र की संभावित समस्या है जो अनुरोध को किसी प्रकार के XSS प्रयास के रूप में चिह्नित करता है। यह आम तौर पर डिफ़ॉल्ट सेटिंग्स के साथ एक समस्या नहीं है, लेकिन कॉर्पोरेट नेटवर्क पर जहां उपयोगकर्ता का नियंत्रण नहीं हो सकता है कि वे किस ब्राउज़र का उपयोग करते हैं अकेले सुरक्षा सेटिंग्स जो आपको समस्या हो सकती है।
तो अंत में मैं वास्तव में मुझे jQuery के लिए Google AJAX API का उपयोग करके नहीं देख सकता (कम से कम "पूर्ण" API कुछ मायनों में एक अलग कहानी है) उदाहरणों को पोस्ट करने के अलावा।
src
अब आपके द्वारा उपयोग किए जाने वाले सरल / सुरक्षित / तेज़ सिंटैक्स को बदल दें ? आपका उत्तर मूल रूप से विहित हो गया है और दोनों परिवर्तनों से लोगों को वह प्राप्त करने में मदद मिलेगी जो वे जल्दी से प्राप्त करते हैं।