2012-05-24 8 views
13

या फ़ायरफ़ॉक्स कैसे निर्धारित करता है कि पासवर्ड/उपयोगकर्ता नाम कहां जाता है?फ़ायरफ़ॉक्स अलग-अलग इनपुट नाम के साथ भी स्वतः पूर्ण क्यों होता है?

यदि मैं इनपुट तत्व का नाम, आईडी, शीर्षक, वर्ग बदलता हूं तो फ़ायरफ़ॉक्स इसे पासवर्ड या ईमेल से भरता रहता है।

उत्तर

25

यदि मैं फ़ायरफ़ॉक्स के स्रोत कोड को सही ढंग से समझता हूं, तो ब्राउज़र पहले फ़ॉर्म में पासवर्ड फ़ील्ड ढूंढता है। यदि फ़ॉर्म में 3 से अधिक पासवर्ड फ़ील्ड हैं, तो ऑटोफिल फ़ंक्शन उस फ़ॉर्म को अनदेखा करता है।

1 से 3 पासवर्ड फ़ील्ड मिलने के बाद, ब्राउज़र लॉगिन फ़ील्ड ढूंढता है। ब्राउज़र पहले पासवर्ड फ़ील्ड से पिछड़ी खोज शुरू करता है और मानता है कि लॉगिन फ़ील्ड text या email या url या tel या number प्रकार का पहला पाया गया फ़ील्ड है।

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

अन्य मामले (फॉर्म सबमिट या 1 से अधिक पासवर्ड फ़ील्ड) यह निर्धारित करने के लिए कुछ "स्मार्ट" तर्क करें कि कौन से पासवर्ड फ़ील्ड में नया पासवर्ड है और कौन सा पुराना पासवर्ड है, शायद संग्रहीत पासवर्ड अपडेट करने के लिए)। यदि आप विवरण में रुचि रखते हैं, तो स्रोत कोड डाउनलोड करें और toolkit/components/passwordmgr/nsLoginManager.js फ़ाइल खोलें। चेक करने के लिए कार्य _fillForm, _getFormFields और _getPasswordFields हैं।

बस सारांशित करने के लिए, फ़ायरफ़ॉक्स को किसी भी आईडी, नाम या श्रेणी विशेषताओं की आवश्यकता नहीं है यह अनुमान लगाने के लिए कि कौन सा क्षेत्र लॉगिन या पासवर्ड है। यह सिर्फ फॉर्म फ़ील्ड के प्रकार और क्रम पर निर्भर करता है।

+2

यह सही है। यह भी उल्लेख किया जाना चाहिए कि यह केवल मूल HTML में फ़ील्ड्स के साथ काम करता है, जेएस जेनरेट की गई सामग्री के साथ नहीं। – user123444555621

+0

बहुत बहुत धन्यवाद। यह अजीब है क्योंकि फ़ायरफ़ॉक्स signon.sqlite में फ़ील्डनाम स्टोर करता है। स्रोत कोड में खोजने के लिए समय और धैर्य नहीं था, लेकिन मैं एक नज़र डालेगा। –

+1

एफएफ के कोड को देखने और इसे समझाए जाने के लिए आपका उत्तर बहुत उपयोगी है। मैंने आपके द्वारा समझाया गया प्रयास किया और यह बताता है कि आपने क्या रेखांकित किया है। यह व्यवहार मुझे परेशान कर रहा था क्योंकि मुझे उम्मीद थी कि वे अपने नाम बदलकर फ़ील्ड के स्वत: पूर्ण को हटा दें, क्योंकि स्वत: पूर्ण = बंद डेटा पर स्वतः पूर्ण होने से नहीं रोकता है जो स्वत: पूर्ण = बंद होने से पहले संग्रहीत किया गया था। – eloone

2

क्या वे फ़ॉर्म पर केवल दो तत्व हैं? फ़ायरफ़ॉक्स संभवतः फॉर्म की संरचना (दो इनपुट बॉक्स, सामान्य के रूप में फ़्लैग किया गया, पासवर्ड के रूप में फ़्लैग किया गया) और इनपुट तत्वों की आईडी के संबंध में सहेजी गई जानकारी भरने की संभावना है।

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

4

मैंने एक सरल समाधान की कोशिश की जो अब तक काम कर रहा है। 2 छिपे हुए फ़ील्ड बनाएं और ब्राउज़र उनको स्वत: भर देगा।

<input type="text" style="display: none"> 
<input type="password" style="display: none"> 
2

एक विकलांग इनपुट पाठ करता है चाल अच्छी तरह से लॉगिन और पासवर्ड आदानों के बीच का उपयोग कर की तरह लग रहा:

<input type="text" disabled="disabled" style="display:none"> 
संबंधित मुद्दे