2009-09-04 12 views
10

मैं एएसपी.नेट एमवीसी का उपयोग कर एक साइट बना रहा हूं, और मेरे पास आंशिक विचार हैं जो विभिन्न चीजों को करने के लिए jQuery का उपयोग करते हैं। मैं Google के AJAX एपीआई में स्विच करने और jQuery लोड करने के लिए अपने लोडर का उपयोग करने की सोच रहा था। हालांकि, मैंने देखा है कि अब मैं $(document).ready() का उपयोग करने में सक्षम नहीं रहूंगा क्योंकि Google का लोडर कॉलबैक google.setOnLoadCallback() निर्दिष्ट करता है।क्या google.setOnLoadCallback कई बार उपयोग करना ठीक है?

यह मेरे लिए एक समस्या है क्योंकि मेरे पास विभिन्न आंशिक विचारों में $(document).ready() है क्योंकि वे अलग-अलग चीजों को स्वयं के लिए विशिष्ट करते हैं कि मैं नहीं चाहता कि अभिभावक दृश्य को अवगत कराएं।

क्या मैं एकाधिक कॉलबैक निर्दिष्ट कर सकता हूं और केवल $(document).ready() के google.setOnLoadCallback(someUniqueCallbackFunction) के साथ स्वैप कर सकता हूं?

क्या यह इस स्थिति को संभालने का आदर्श तरीका होगा या क्या कुछ और पसंद किया जाता है?

+0

इन आंशिक विचारों के लिए, क्या आप उन्हें पृष्ठ या गतिशीलता के साथ प्रस्तुत कर रहे हैं (उदाहरण के लिए, AJAX टैब के माध्यम से)? एक नियमित पृष्ठ में – jmarnold

+0

। मैं इस बिंदु पर AJAX का उपयोग नहीं कर रहा हूँ। – Joseph

उत्तर

0

मुझे यहां बिंदु याद आ रहा है लेकिन आपके उपयोगकर्ता नियंत्रण $ (दस्तावेज़) के बीच कोई संघर्ष नहीं है .ready और google.setOnLoadCallback जो मुझे पता है।

मान लें कि आप jquery लोड करने के लिए Google का उपयोग कर रहे हैं, $ (दस्तावेज़) में आपका कोड। Google तब तक नहीं चलेंगे जब तक कि Google ने jquery को लोड नहीं किया हो।

जब तक आपके मास्टरपेज में jQuery लोड हो रहा है, तो सुनिश्चित न करें कि समस्या क्या है।

+0

मैं इसे आज़माउंगा और देख सकता हूं कि यह काम करता है या नहीं। मैंने setOnLoadCallback और $ (दस्तावेज़) का उपयोग करने का प्रयास किया है। पहले ही Google API Playground पर एक ही HTML फ़ाइल में और इसे पसंद नहीं आया। शायद मैं उपयोगकर्ता नियंत्रण के साथ ठीक हूँ, यद्यपि! – Joseph

+1

ऐसा लगता है कि ठीक काम करता है। मेरे पास एक मास्टर फ़ाइल है जो google.load (jquery) का उपयोग करती है और उसके बाद बाद में एक दृश्य में मैं $ (दस्तावेज़) का उपयोग कर रहा हूं। पहले से ही यह ठीक काम कर रहा है! – Joseph

32

हां, आप $(document).ready के बदले setOnLoadCallback का उपयोग कर सकते हैं। एक अनियंत्रित दूसरा पैरामीटर (या कम से कम, मुझे यह नहीं मिल रहा है) जो कॉलबैक फ़ंक्शन को कॉल करने के लिए निर्दिष्ट करता है; संभावित मान "झूठी" (डिफ़ॉल्ट) हैं - विंडो लोड पर, या "सत्य" - डोम लोड पर (DOMContentLoaded)। एक बार सभी मार्कअप लोड होने के बाद डीओएम घटना आग लगती है (window.load से बहुत पहले)। विंडो लोड इवेंट सभी छवियों और स्क्रिप्ट के बाद आग लगती है और इस तरह लोडिंग समाप्त हो गई है।

// Very similar to $(document).ready() 
google.setOnLoadCallback(OnLoad, true); 

// Very similar to $(window).load() 
// Same as google.setOnLoadCallback(OnLoad, false); 
google.setOnLoadCallback(OnLoad); 

हाँ, आप एक ही पृष्ठ पर setOnLoadCallback कई बार उपयोग कर सकते हैं। यह AJAX API की एक बहुत ही महत्वपूर्ण अनियंत्रित विशेषता है (इस पोस्टिंग के रूप में अनियंत्रित)। प्रत्येक बार जब आप setOnLoadCallback को कॉल करते हैं, तो यह डोम या विंडो लोड के बाद बुलाए जाने वाले सभी कार्यों को ढेर करता है।

+0

यही मेरी मदद करता है। काश यह बेहतर दस्तावेज थे। – mdoar

+0

आपने अभी अपना दिन बनाया है। – Wistar

+0

अब यह [दस्तावेज] है (https://developers.google.com/chart/interactive/docs/basic_multiple_charts) कि 'setOnLoadCallback' को कई बार कहा जा सकता है। – GSerg

1

मैं एक ही समस्या में भाग गया। मैं googled 2 पेज खोज एक पेज पर चल रहा है, आदि ...

अंत में मुझे यह मिला और क्योंकि मैं 2 पैनलों को अनिवार्य रूप से एक पृष्ठ पर Google खोज परिणामों को दिखाना चाहता था।

google.setOnLoadCallback(LoadGoogleNewsResults); 
google.setOnLoadCallback(LoadGoogleNewsResultsForum); 

यह मेरे लिए काम किया :)

कोड, http://login.debt-line.org.uk पर है सिर्फ स्रोत देखें क्लिक करें।

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