2012-12-24 9 views
8

मैंने हाल ही में अपने एएसपी.नेट वेब एप्लिकेशन में देखा है कि अगर मैं अपने उपयोगकर्ता एजेंट को खाली स्ट्रिंग पर सेट करता हूं (उपयोगकर्ता एजेंट को धोखा देने के लिए फ़ायरफ़ॉक्स प्लग-इन का उपयोग करके), तो एएसपी.नेट पोस्टबैक करने के लिए आवश्यक जावास्क्रिप्ट उत्पन्न नहीं करेगा। अधिक विशेष रूप से, यदि आप अपने जावास्क्रिप्ट से __doPostBack(a, b) फ़ंक्शन को कॉल करने का प्रयास करते हैं, तो आपको यह कहते हुए एक त्रुटि मिलेगी कि फ़ंक्शन अपरिभाषित है।सभी उपयोगकर्ता एजेंटों के लिए जावास्क्रिप्ट जेनरेट करने के लिए फोर्स एएसपी.नेट

मैं समझता हूं कि प्रत्येक ब्राउज़र में उपयोगकर्ता एजेंट होता है, इसलिए यह अक्सर नहीं आ जाएगा, लेकिन समस्या का सार अभी भी मौजूद है: ऐसे मामले हैं जिनमें एक अपरिचित या विकृत उपयोगकर्ता एजेंट आपके वेब एप्लिकेशन को अनुपयोगी प्रस्तुत कर सकता है अगर आप पोस्टबैक पर भरोसा करते हैं।

यह इस प्रश्न के समान है: ASP.net not generating javascript for some User Agents, लेकिन अगर मैं इसे पढ़ रहा हूं तो ऐसा लगता है कि आप प्रत्येक अपरिचित उपयोगकर्ता एजेंट केस को किसी अन्य ब्राउज़र के रूप में ठीक कर देंगे और इसे मुखौटा करेंगे। मेरी चिंता एक व्यक्तिगत उपयोगकर्ता एजेंट के साथ कम है, और इससे भी अधिक तथ्य यह है कि कुछ उपयोगकर्ता एजेंट मेरे आवेदन का उपयोग नहीं कर पाएंगे और मुझे यह नहीं पता होगा क्योंकि त्रुटि जावास्क्रिप्ट में होती है, न कि सर्वर पर।

क्या किसी को इस तरह से पता है कि मैं हमेशा आवश्यक जावास्क्रिप्ट उत्पन्न करने के लिए ASP.NET को मजबूर कर सकता हूं?

+0

अपने उपयोगकर्ताओं को वास्तव में इस समस्या का सामना करना पड़ा है? यदि नहीं, तो मैं पूछूंगा कि क्या आपके उपयोगकर्ताओं ने वास्तव में अन्य समस्याओं का सामना किया है। –

+0

@ जॉन - किसी ने इसकी सूचना नहीं दी है, लेकिन हमारा वेब ऐप ईकॉमर्स से संबंधित है, इसलिए औसत उपयोगकर्ता जो किसी समस्या का अनुभव करता है, आमतौर पर हमसे संपर्क करने की परेशानी से गुजरता नहीं है, वे प्रतिस्पर्धी की साइट पर जाते हैं। हमने अभी भी एक मोबाइल स्टोर लॉन्च किया है जो संभावित उपयोगकर्ता एजेंटों का एक पूरी तरह से नया लीग आमंत्रित करता है और मैं जितना संभव हो उतना मुद्दों से बचना चाहता हूं। – Adam

+1

मुझे आशा है कि आप अपने अनचाहे अपवादों को लॉग कर रहे हैं। अन्यथा, आप अपने ग्राहकों का अनुभव नहीं कर रहे समय फिक्सिंग समस्याओं को खर्च करने में खतरे में हैं, जबकि आपके प्रतिद्वंद्वियों ने अपनी साइट को अपनी साइट में सुधार करने में व्यतीत किया है। –

उत्तर

4

आप उपयोगकर्ता एजेंट को खाली निर्धारित करते हैं, या यदि आप एक अज्ञात उपयोगकर्ता एजेंट स्ट्रिंग का उपयोग करें, तो asp.net Browsers निर्देशिकाओं से Default.browser फ़ाइल पढ़ता है और तुम वहाँ कैसे परिभाषित आप इस मामलों पर कार्रवाई करने के पसंद करने के लिए कर सकते हैं।

लाइनों है कि आप बदल सकते हैं और इस मामलों पर की जरूरत का उपयोग जावास्क्रिप्ट है कि लोगों को:

 <capability name="jscriptversion"  value="5.6" /> 
     <capability name="javascript"   value="true" /> 
     <capability name="javascriptversion" value="1.5" /> 
डिफ़ॉल्ट पर

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

लिंक बटन से बचने के लिए बेहतर है (_doPostBack का उपयोग करें) और उदाहरण के लिए पोस्ट बैक बटन का उपयोग करें। मुझे पता है कि ग्रिड व्यू और अन्य उपयोग भी _doPostBack पेजिंग के लिए ... ठीक है, लेकिन जावास्क्रिप्ट के साथ भी काम करने में सक्षम होने के लिए बेहतर एक अच्छी साइट है।

कुछ इसी तरह के सवाल:
__doPostBack is undefined on DotNetNuke website for IE 10

और इस ब्लॉग: Bug and Fix: ASP.NET fails to detect IE10 causing _doPostBack is undefined JavaScript error or maintain FF5 scrollbar position

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