2016-03-29 7 views
11

मैं इस बारे में उत्सुक हूं कि फ़ाइलों को ब्राउज़ करने के लिए अलग-अलग ब्राउज़रों के अलग-अलग <input type="file"> बटन क्यों हैं। कई सवाल हैं कि उन्हें कैसे शैलीबद्ध करना है, स्पष्ट रूप से कुछ प्रकार के "हैक" का उपयोग उन्हें बदलने के लिए किया जाता है। लेकिन किसी ने वास्तव में समझाया कि ब्राउजर इसे क्यों नियंत्रित करते हैं?ब्राउज़र इनपुट इनपुट फ़ाइल बटन को क्यों नियंत्रित करते हैं?

+0

एफवाईआई, यह बहुत आसान हो रहा है इन बटनों को & :: - वेबकिट-फ़ाइल-अपलोड-बटन और :: - एमएस-ब्राउज़ psuedo-classes के माध्यम से स्टाइलिज़ करने के लिए। लेकिन मुझे इसके बारे में जानने से पहले मुझे कठिन तरीके से काम करना पड़ा। अगर कोई इस बात की तलाश में है कि कोई कैसे बटन को स्टाइलिज़ करने के लिए, मैंने ब्लॉग पोस्ट की एक श्रृंखला लिखी जो मुख्य रूप से [स्टाइलिंग फाइल इनपुट] (http://mrme.me/lio/blog) के बारे में है। –

उत्तर

8

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

उस समय, अधिक ब्राउज़र दिखाई देते हैं और उनके पास एक ही डिफ़ॉल्ट फ़ॉन्ट हो सकता है लेकिन नहीं, वे एक-दूसरे से अलग होना चाहते हैं।

कल्पना कीजिए कि डेवलपर बटन को स्टाइल करना भूल जाता है और बटन के लिए कोई डिफ़ॉल्ट नहीं है। <input> कैसा दिखता है? एक पाठ के नीचे तैरने वाला एक पाठ? यह बहुत दृष्टि से नहीं है।

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

संदर्भ: Change default text in input type="file"?

इसलिए कह नियंत्रण एक छोटा सा भी मजबूत है। एक फॉलबैक बहुत बेहतर लगता है। :)

+0

लेकिन डिफ़ॉल्ट बटन टेक्स्ट होने पर थोड़ा अधिक है, प्रकार = "फ़ाइल" – Dray

+0

का मामला मैंने इस सवाल में उल्लेख किया है कि कुछ "हैक्स" उपलब्ध हैं और मुझे इसके बारे में पता है। – Dray

+0

अच्छी तरह से मैं आपकी प्रतिक्रिया की सराहना करता हूं और मैं तब तक इंतजार करूंगा जब तक कि मैं अधिक जानकारी एकत्र नहीं कर सकता। जी अगर आप और भी पा सकते हैं तो रीट करें। धन्यवाद :) – Dray

4

AS @cweitat पहले ही संकेत दिया गया है, यह एचटीएमएल और ब्राउज़रों की शुरुआती शुरुआत में आता है (आपको मोज़ेक ब्राउज़र याद है?)।

उस समय पृष्ठ डेटा और ब्राउज़र के बीच बातचीत करना HTML वाक्यविन्यास और अर्थशास्त्र तक ही सीमित था। कोई जावास्क्रिप्ट संशोधन उपलब्ध नहीं था।

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

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

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

दूसरी ओर, वर्तमान में पृष्ठ प्रस्तुतियों को प्रभावित करने की बढ़ती (और लगभग विस्फोट) संभावनाएं, वर्तमान HTML तत्व वाक्यविन्यास को "विस्तारित करने" के दबाव को भी कम करती हैं। (मैं वेब पृष्ठों है कि कुछ जावास्क्रिप्ट के साथ div के पक्ष में सबसे मानक HTML तत्वों का उपयोग करने से बचने के बहुत देखा है।)

तो ब्राउज़र नियंत्रण <input type="file"/>, क्योंकि वे इस तत्व की एक उपयुक्त प्रतिनिधित्व प्रदान करने के लिए है।चूंकि आंतरिक प्रतिनिधित्व पर कोई विनिर्देश नहीं है, इस तत्व के कार्यान्वयन का पालन करना है, लेकिन इस तरह के तत्व का उपयोग किए बिना कार्यक्षमता प्राप्त करने के कुछ विकल्प होने के कारण, यह संभावना नहीं है कि ब्राउज़र विक्रेता पृष्ठ डेवलपर्स के लिए आंतरिक स्थिति को उजागर करने के लिए परेशान होंगे (और इस तरह अधिक नियंत्रण की अनुमति)।

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

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

+0

सिर्फ अपनी राय जानने के लिए, क्यों 'इनपुट = "फ़ाइल" को अन्य प्रकारों के विपरीत एक विशिष्ट विज़ुअलाइज़ेशन दिया जाना चाहिए, और भले ही उन्हें एक विशिष्ट विज़ुअलाइज़ेशन देना पड़े, हमें कम से कम इसे संपादित करने की अनुमति नहीं देनी चाहिए? – Dray

+0

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

+0

मेरा मतलब आपको अपमानित करने का नहीं है लेकिन आपका उत्तर abstractions से भरा है। और मैंने जो पूछा उससे जवाब नहीं दिया, क्या आप फिर से देख सकते हैं और थोड़ी अधिक स्पष्ट होने की कोशिश कर सकते हैं? हालांकि मैं आपकी प्रतिक्रिया की सराहना करता हूं। – Dray

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