2010-01-06 2 views
6

पर लोड किया गया है, मैं एएसपीनेट वेबफॉर्म में काम कर रहा हूं और मैं एक उपयोगकर्ता नियंत्रण बना रहा हूं जो बाहरी फ़ाइल में जावास्क्रिप्ट के एक छोटे से बिट पर निर्भर करता है।एएसपीनेट सुनिश्चित करें कि जावास्क्रिप्ट को केवल

मैं उपयोगकर्ता नियंत्रण के अंदर जावास्क्रिप्ट का संदर्भ देने में सक्षम होना चाहता हूं ताकि यह सुनिश्चित किया जा सके कि यह पृष्ठ पर लोड हो जाता है, लेकिन समस्या यह है कि UserControl किसी पृष्ठ पर कई बार प्रदर्शित हो सकता है, इसलिए मैं केवल स्क्रिप्ट चाहता हूं UserControl के पहले उदाहरण के साथ लोड किया जाना चाहिए।

क्या एएसपी.NET वेबफॉर्म में ऐसा करने का कोई आसान तरीका है?

उत्तर

9

इसे संभालने के लिए ClientScriptManager की RegisterClientScript() विधियों का उपयोग करें। आपके मामले में, चूंकि आप बाहरी फ़ाइल से स्क्रिप्ट शामिल कर रहे हैं, RegisterClientScriptInclude() का उपयोग करें।

वैकल्पिक रूप से, यदि आप UpdatePanels का उपयोग कर रहे हैं, तो ScriptManager के समतुल्य Register...() विधियों का उपयोग करें।

+0

बिल्कुल वही जो मैं खोज रहा था। धन्यवाद – lomaxx

-1

पृष्ठ के हीड में स्क्रिप्ट का संदर्भ लें।

<html> 
    <head> 
     ... 
     <script src="<name of file>" type="text/javascript"></script> 
     ... 
    </head> 
    <body> 
     ... 
    </body> 
</html> 
0

यदि आप इसकी सामग्री को नियंत्रित करते हैं, तो आप इस समस्या को जेएस फ़ाइल में भी संभाल सकते हैं।

var myObj = myObj || {}; // Variable to namespace your work 

// Make sure we do our work only once 
if (!(myObj.token)) { 

    // do our work here... 

    myObj.token = {}; // this ensure we won't enter the if block the next time 

} 
+0

मुझे यकीन नहीं है कि यह कैसे सुनिश्चित करेगा कि एक स्क्रिप्ट फ़ाइल केवल एक बार लोड हो जाती है? यह जांच करेगा कि क्या एक स्क्रिप्ट लोड हो गई है, लेकिन क्या आप यह समझा सकते हैं कि यह सुनिश्चित करेगा कि स्क्रिप्ट कई बार लोड नहीं होती है? – lomaxx

+0

हां, तकनीकी रूप से स्क्रिप्ट को पृष्ठ DOM में दो बार शामिल किया गया है और ब्राउज़र द्वारा दो बार संसाधित किया जाएगा। अंतर यह है कि, दूसरे पास पर, कुछ भी नहीं होता क्योंकि myObj.token को पहले से ही परिभाषित किया गया है। –