जावास्क्रिप्ट की पुष्टि, पुष्टि और सतर्क "पुराने जमाने" माना जाता है [बंद]


21

हाल ही में मैं एक जिम के लिए एक वेब-आधारित प्रबंधन प्रणाली विकसित कर रहा हूं। उनका पिछला ऐप विजुअल बेसिक में विकसित किया गया था। नए ऐप के लिए, सभी फ्रंट-एंड स्क्रिप्टिंग jQuery का उपयोग करती है, सर्वर PHP & MySQL चला रहा है ... आप जानते हैं, विशिष्ट एल-सस्ती लाइनक्स आधारित स्टैक।

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

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


7
"एल सस्तेओ?" वास्तव में? क्या यह एक छोटी सी बात नहीं है?
०६:१५ पर अस्त्रासर

1
मैं उलझन में हूं; पहले आप कहते हैं कि ऐप को Visual Basic में विकसित किया गया था, फिर आप कहते हैं कि सर्वर PHP चला रहा है। है ना?
1

@ जॉकिंग: ऐसा लगता है कि वह कह रहा है कि पुरानी प्रणाली VB में लिखा गया एक डेस्कटॉप ऐप था, और नया (वह जो लिख रहा है) एक LAMP स्टैक के साथ लिखा गया है।
जॉर्डन

लगता है जैसे उनका पिछला ऐप vb में लिखा गया था, वह वर्तमान में इसके लिए एक वेब फ्रंट एंड बना रहा है।
ग्रैंडमास्टरबी

जवाबों:


56

1. UX: संदेश बॉक्स ज्यादातर बुरे होते हैं

UX बिंदु से सभी मामलों में अलर्ट बॉक्स खराब हैं। डेस्कटॉप ऐप्स में। अलर्ट या इनलाइन जावास्क्रिप्ट संदेशों के रूप में वेब ऐप्स में। हर जगह।

यदि आप जानना चाहते हैं कि एलन कू¹ द्वारा आप फेस 3 के बारे में क्यों पढ़ सकते हैं; यह बहुत अच्छी तरह से समझाता है कि यह वर्कफ़्लो को कैसे बाधित करता है और उपयोगकर्ता को परेशान करता है, और वर्तमान सॉफ़्टवेयर में मौजूद लगभग हर अलर्ट बॉक्स कितना गहरा है । पृष्ठ 542 पर, "डायलॉग जो" वुल्फ! "रोया, बताते हैं कि सतर्क बक्से नियमित रूप से खारिज कर दिए जाते हैं, इसलिए उनका मॉडल पूरी तरह से टूट गया है। पुस्तक के पृष्ठ 543 पर तीन प्रमुख डिजाइन सिद्धांत सूचीबद्ध हैं:

  • करो, मत पूछो।
  • सभी क्रियाओं को प्रतिवर्ती बनाएं।
  • उपयोगकर्ताओं को गलतियों से बचने में मदद करने के लिए मॉडल प्रतिक्रिया प्रदान करें।

फिर, लेखक हमें बताते हैं कि कैसे सही डिजाइन दृष्टिकोण द्वारा अलर्ट बक्से को प्रतिस्थापित किया जाए।

शीघ्र संदेश थोड़े अलग हैं। और फिर भी, वे आपके ऐप के उपयोगकर्ता अनुभव को तोड़ते हैं। यदि आप चाहते हैं कि उपयोगकर्ता कुछ दर्ज करें, तो एक टेक्स्टबॉक्स या एक टेक्स्टारिया का उपयोग करने पर विचार करें, जब जरूरत हो तो इसे जावास्क्रिप्ट के साथ सजाएं। आलसी मत बनो, RIA और AJAX- सक्षम ऐप्स के युग में एक समृद्ध इंटरफ़ेस प्रदान करें ; सभी मामलों में, यदि जावास्क्रिप्ट अक्षम है, तो आपका संकेत प्रदर्शित नहीं किया जाएगा।

वेब पेजों में, अलर्ट बॉक्स और संकेत दोनों ही ज्यादातर कष्टप्रद होते हैं। कुछ उदाहरण:

  1. कुछ फ़ोरम आपको सूची आइटम के लिए असीम रूप से संकेत देकर सूची बनाते हैं। इसका अर्थ है कि सूची बनाते समय, आप कॉपी-पेस्ट सहित पेज का उपयोग नहीं कर सकते। आपके पास एक भी छोटा क्षेत्र है। लंबे पाठ के बारे में क्या? बोल्ड और इटैलिक्स के बारे में क्या?

  2. "यदि आप जारी रखते हैं, तो फोटो आपके प्रोफ़ाइल से निश्चित रूप से हटा दी जाएगी। क्या आपको यकीन है?" । निश्चित रूप से मुझे यकीन है! क्या मैं "मेरे प्रोफ़ाइल से फ़ोटो हटाऊं" क्लिक करें? आपका वेब ऐप क्यों मुझे बेवकूफ बना रहा है? दरअसल, GMail के रूप में Google एप्लिकेशन सही दृष्टिकोण दिखाते हैं। आप जो चाहें हटा सकते हैं, हटा सकते हैं, नष्ट कर सकते हैं, और जब आप ऐसा करते हैं, तो ऐप एक छोटा "अनडू" लिंक प्रदर्शित करता है।

  3. "क्या आप हमारा सबसे बड़ा सर्वेक्षण करना चाहते हैं?" । ठीक है, वास्तव में मैं आपकी वेबसाइट पर जाने के लिए वहां गया था, लेकिन जब से आप अपने कष्टप्रद संदेशों से मुझे परेशान करते हैं, मैं कहीं और जाना चाहता हूं।

  4. "कॉपीराइट की गई तस्वीरों की सुरक्षा के लिए इस वेबसाइट पर राइट क्लिक अक्षम है" । खैर, वास्तव में मैंने अपनी टिप्पणी भेजने से पहले वर्तनी परीक्षक की भाषा को बदलने के लिए राइट-क्लिक किया। यकीन है, मैं इसे वर्तनी की जाँच किए बिना भेजूंगा।

निष्कर्ष: उपयोगकर्ता अनुभव के दृष्टिकोण से, एप्लिकेशन अधिकांश समय गलत तरीके से संदेश बॉक्स का उपयोग करते हैं।

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

खैर, वेब एप्लिकेशन में संदेश बॉक्स का उपयोग न करने के अन्य कारण हैं:

2. डिजाइन: अलर्ट बॉक्स का अपना डिजाइन है

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

डिजाइनरों के लिए, जावास्क्रिप्ट संदेश अलर्ट बॉक्स की तुलना में बहुत अधिक शक्तिशाली हैं।

वे बहुत अधिक व्यापक हैं। आप बोल्ड और इटैलिक जोड़ सकते हैं, आप अपने खुद के बटन चुन सकते हैं (किस बारे में: "हम माफी मांगते हैं लेकिन दर्ज किया गया पासवर्ड अमान्य है। [मेरा पासवर्ड रीसेट करें] [किसी अन्य का प्रयास करें] [रद्द करें]") ²।

3. जावास्क्रिप्ट: अनुप्रयोग प्रवाह बंद हो जाता है

अलर्ट बॉक्स प्रदर्शित करते समय, उपयोगकर्ता के क्लिक करने तक जावास्क्रिप्ट निष्पादित करना बंद कर देता है। एक वेबसाइट पर, यह ठीक हो सकता है। एक वेब ऐप के साथ, यह अक्सर एक समस्या बन जाता है।

4. सैंडबॉक्स: उपयोगकर्ता को अपने कंप्यूटर को रिबूट करने के लिए मजबूर न करें

उन भद्दी वेबसाइटों को याद करें जो आपको अनंत संख्या में संदेश बॉक्स दिखाती हैं ? पर्याप्त तकनीकी पृष्ठभूमि के बिना काम करने में सक्षम होने के लिए उपयोगकर्ताओं के लिए एकमात्र तरीका वास्तव में अपने कंप्यूटर को रिबूट करना था। यह हमें एक समस्या के लिए लाता है: चेतावनी बॉक्स वेबसाइट या वेब एप्लिकेशन के दायरे से बाहर हैं। आप उपयोगकर्ता को ब्राउज़र के अन्य टैब तक पहुँचने से रोकने के लिए अधिकृत नहीं हैं।

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

स्क्रीनशॉट एक चेकबॉक्स के साथ एक अलर्ट बॉक्स दिखाता है "अतिरिक्त संवाद बनाने से इस पृष्ठ को रोकें"

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

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

अंतिम लेकिन कम से कम, यदि आपके एप्लिकेशन ने अलर्ट बॉक्स दिखाने का निर्णय लिया तो क्या होगा? क्या होगा यदि उपयोगकर्ता कुछ महत्वपूर्ण काम कर रहा है, और अभी आपके ऐप के साथ बातचीत नहीं करना चाहता है?


¹ चेहरा 3, इंटरेक्शन डिजाइन के अनिवार्य बारे में , एलन कूपर, रॉबर्ट Reimann और डेविड क्रोनिन, ISBN 978-0-470-08411-3; अध्याय 25: त्रुटियां, अलर्ट और पुष्टि।

An यह सिर्फ एक उदाहरण है। कृपया, इसे अपने वेब एप्लिकेशन में न करें, क्योंकि यह वास्तव में एक खराब डिज़ाइन विकल्प है।

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


1
इस सवाल का अनंत या स्पैम पॉपअप से कोई लेना-देना नहीं है, तो आप यहां इसका उल्लेख क्यों कर रहे हैं? और मुझे नहीं लगता कि इसके लिए एक बुरी बात यह है कि जेएस पॉप अप अस्थिर हैं। जब ठीक से उपयोग किया जाता है (उपयोगकर्ता को कुछ MAJOR के लिए सचेत करने के लिए) वे उपयोगकर्ता को कुछ और करने से पहले उन्हें संबोधित करने के लिए मजबूर करते हैं, जो कभी-कभी आप चाहते हैं।
ग्राहम

इस सवाल का जवाब नहीं है।
CaffGeek

1
"जब एक चेतावनी बॉक्स प्रदर्शित करने, जावास्क्रिप्ट उपयोगकर्ता क्लिक करता है जब तक क्रियान्वित बंद हो जाता है" - यह एक के लिए सच है confirm()और prompt(); के साथ alert(), व्यवहार ब्राउज़र-आश्रित है (चेतावनी जारी होने पर भी निष्पादन जारी रह सकता है) - तर्क यह है कि "वैसे भी केवल एक ही रास्ता है")।
पिस्कवॉर

1
@ ग्राहम: आप अनंत पॉपअप के लिए सही हैं; मैं इस विषय पर ऑफ-टॉपिक था। मैंने इसे और बेहतर बनाने की कोशिश की। किसी बड़ी चीज़ के लिए सचेत करने के लिए, मेरे उत्तर के चौथे बिंदु को देखें: हाँ, आप उपयोगकर्ता द्वारा किसी कार्रवाई की पुष्टि करने से पहले सब कुछ रोकना चाह सकते हैं, लेकिन यह आपको ब्राउज़र के हर टैब को ब्लॉक करने की अनुमति नहीं देता है, क्योंकि अन्य टैब नहीं करते हैं आपके वेब एप्लिकेशन से संबंधित हैं।
बजे आर्सेनी मूरज़ेंको

1
@BornToCode: कोई विकल्प नहीं है। जैसे ही आप उपयोगकर्ता की स्क्रीन पर तस्वीरें दिखाते हैं, उन्हें कॉपी होने से बचाने का कोई तरीका नहीं है। आपके दूसरे प्रश्न के लिए, आपको अधिक विशिष्ट होना चाहिए। Ux.se की कोशिश करें ।
आर्सेनी मूरज़ेंको 10

3

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


2

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

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


1

क्योंकि ब्राउज़र उन्हें बहुत अच्छी तरह से नहीं संभालते हैं । जैसा कि आपने देखा होगा कि वे आमतौर पर मोडल डायलॉग होते हैं और न केवल उपयोगकर्ताओं को अपने ब्राउज़र को हिलाने और आकार देने से रोकते हैं बल्कि वे अन्य टैब को भी एक्सेस होने से रोकते हैं, जो बहुत कष्टप्रद है।

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

इसलिए मेरा सुझाव है कि आप अलर्ट व्यवहार को ओवरराइड करें ताकि सभी ब्राउज़र कम से कम (कम से कम अलर्ट) को अधिक सुरुचिपूर्ण ढंग से संभाल सकें।

कुछ संक्षेप कारण:

  • यह मानक एपीआई है और डेवलपर्स यह पता लगा सकते हैं कि आप क्या करने की कोशिश कर रहे हैं।
  • यह अधिक उपयोगकर्ता के अनुकूल है, और बेहतर दिखता है।
  • प्लेटफ़ॉर्म समर्थन, मोबाइल साइटों को मूल एपीआई की आवश्यकता हो सकती है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.