2010-02-20 14 views
5

मैं जो कुछ जावास्क्रिप्ट कार्यों का उपयोग एक आवेदन,डुप्लिकेट जावास्क्रिप्ट कार्य जो पृष्ठ

सभी javascripts masterpage में शामिल के रूप में, उनमें से ज्यादातर withpage आता है जो Asp.net में शामिल करना आवश्यक नहीं है का निर्धारण कैसे करें, और के कुछ उन दोहराए जाते हैं (कारण कुछ अलग जेएस फ़ाइल में उपयोग किया जाता है।)

तो मैं जांचना चाहता हूं कि डुप्लिकेट फ़ंक्शंस निर्धारित करने और उन्हें हटाने का कोई तरीका है या नहीं?

+0

मैं थोड़ा उलझन में हूँ अपना होमवर्क करने जाना है - द्वारा "निकालें" करना आप का मतलब रनटाइम पर उन्हें डिफॉल्ट करना या उन्हें कोडबेस से हटा देना है? – user266803

+0

मैं अनावश्यक स्क्रिप्ट को हटाने के साथ पेज आकार को कम करना चाहता हूं –

उत्तर

4

फ़ंक्शन घोषित करते समय आप यह जांच सकते हैं कि फ़ंक्शन मौजूद है या नहीं, लेकिन आपको जिस तरीके से काम करना है उसे बदलना है।

function foo(){ something } 

के बजाय

if(window.foo===undefined){ 
window.foo=function(){ something } 
} 

करते हैं और आप अभी भी यह कॉल कर सकते हैं

foo(); 
यह सब

एक खोजने के & साथ आपकी फ़ाइलों में जोड़ा जा सकता है regexp का उपयोग कर की जगह, इसलिए मैं इसे आसान मानता हूं :)

+0

इस समाधान में पृष्ठ पर फ़ंक्शन शामिल होगा, और पृष्ठ –

+1

पर फ़ंक्शन जोड़ने से रोकें नहीं, यदि यह कार्यों को डुप्लिकेट करता है तो जेएस फ़ाइल लोड करने से रोकने का कोई तरीका नहीं है। जब मेरा नाम इस्तेमाल होता है तो मेरा समाधान किसी नामस्थान में फ़ंक्शन जोड़ने से रोक देगा। अगर आप लोडिंग फाइलों को छोड़ना चाहते हैं, तो आपको सर्वर-साइड मैनेजर बनाना होगा जो जेएस फाइलों की सेवा करेगा और डुप्लिकेट की तलाश में उन्हें पढ़ेगा। आप जेएस फ़ाइलों को गतिशील रूप से लोड करने के लिए स्विच कर सकते हैं, लेकिन आप नहीं जानते कि आप लोड होने तक क्या लोड कर रहे हैं। – naugtur

2

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

यह उत्तर चूसने जा रहा है, और मैं क्षमा चाहता हूं: Ctrl+Shift+F। यदि आप सोचते हैं कि इसका एक अलग नाम/एक ही फ़ंक्शन है, तो उसी फ़ंक्शन नाम, या समान कक्षाओं/आईडी के लिए खोजें।

मैं के लिए समारोह नाम, #id खोज पाते हैं और .class सबसे अधिक उत्पादक होने के लिए। अपनी खोज से .cs फ़ाइलों को भी बहिष्कृत करें। यह समय कम हो जाएगा क्योंकि # और . केवल jQuery में उपयोग करते समय दिखाई देगा, लेकिन यह अभी भी एक बहुत ही मैन्युअल प्रक्रिया है।

मुझे आशा है कि किसी के पास यहां एक बेहतर समाधान होगा, और यदि वे करते हैं तो मैं बेवकूफ महसूस करूंगा, लेकिन मुझे ईमानदारी से ऐसा करने के लिए वीएस 2008 में बेहतर तरीका नहीं मिला।

0

यदि दो स्क्रिप्ट्स के फ़ंक्शंस का एक ही नाम होता है, या किसी ऑब्जेक्ट के विधियों का नाम दिया जाता है, तो दूसरी स्क्रिप्ट का अर्थ होने पर पहला फ़ंक्शन दूसरे स्थान पर बदला जाएगा।

आपके पास दो समान कार्य नहीं होंगे 'स्थान लेना', लेकिन केवल एक ही।

+0

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

0

यदि आप वेबफॉर्म या एमवीसी का उपयोग कर रहे हैं तो यह सवाल से स्पष्ट नहीं है। किसी भी मामले में आप किसी प्रकार के स्क्रिप्ट प्रबंधक का उपयोग करना चाहते हैं।

MVC के लिए मैं इस शोध में ज्यादा एक ही समस्या दिखाई दी: A Simple ScriptManager for ASP.NET MVC

वेबफ़ॉर्म के लिए, ईआरएम, यकीन नहीं, मैं फिर से

+0

मैं एएसपीनेट वेब फॉर्म का उपयोग कर रहा हूं एमवीसी नहीं –

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