फ़ायरफ़ॉक्स के साथ बग - रिफ्रेशिंग के समय इनपुट का रीसेट न होना अक्षम होना


103

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

यदि आप निम्नलिखित स्रोत के साथ एक मूल वेबपेज बनाते हैं:

<html>
  <head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
  </head>
  <body>
    <div>
      <input id="txtTest" type="text" />
      <input type="button" onclick="$('#txtTest').attr('disabled','disabled');" value="Set Disabled (jQuery)" />
      <input type="button" onclick="document.getElementById('txtTest').disabled = true;" value="Set Disabled (js)" />
      <input type="button" onclick="$('#txtTest').removeAttr('disabled');" value="Remove Disabled" />
    </div>
  </body>
</html>

यदि आप गतिशील और फिर पृष्ठ को रीफ्रेश, बजाय विकलांग नहीं की उसकी मूल स्थिति में वापस रीसेट करने की अक्षम रहेगी। मैं IE8 और क्रोम में यह कोशिश कर चुका हूं और जब मैं रिफ्रेश होता हूं, तो मैं जैसा चाहता हूं, वैसा ही व्यवहार करना चाहिए ।disabletextboxtextboxtextbox

एक और दिलचस्प जानकारी यह है कि यह अभी भी एक ही काम करता है अगर इनपुट checkboxइसके बजाय है textbox


2
क्या आप सुनिश्चित हैं कि यह केवल फ़ायरफ़ॉक्स "सुविधा" नहीं है, जहां यह inputतत्वों की स्थिति को याद करता है जब आप बस ताज़ा करते हैं?
३२

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

5
वाह, तुम सही हो! मैंने इनपुट पर स्वतः पूर्ण = "बंद" सेट किया और यह अब नहीं होता है। यह बहुत असुविधाजनक है कि फ़ायरफ़ॉक्स डिफ़ॉल्ट रूप से चालू हो जाता है!
स्टीफन मेसा

3
हाँ, मैं भूल गया हूँ कि आप इसे निष्क्रिय कर सकते हैं autocomplete="off"यह ब्लॉग पोस्ट मेरे लिए परिचित है, इसलिए मैं निश्चित रूप से इससे पहले आया हूं। आपको अपने स्वयं के प्रश्न का उत्तर लिखना चाहिए (या मुझे चाहिए?)
३३०

1
इस बारे में एक खुली मोज़िला बग रिपोर्ट है: Bugzilla.mozilla.org/show_bug.cgi?id=654072
cvrebert

जवाबों:


126

यह फ़ायरफ़ॉक्स का एक "फीचर" है जो पेज रिफ्रेश में इनपुट वैल्यूज़ को याद रखता है। इस व्यवहार को ठीक करने के लिए, आप बस autocomplete="off"इनपुट वाले फॉर्म पर, या सीधे इनपुट पर सेट होते हैं।

यह काम करने से स्वत: बंद हो जाता है और ब्राउज़र को इनपुट फ़ील्ड की स्थिति को याद रखने से रोकता है।

वैकल्पिक रूप से, आप CTRL + F5 पर क्लिक करके "हार्ड-रिफ्रेश" कर सकते हैं। यह वर्तमान पृष्ठ को पूरी तरह से रीसेट कर देगा।


4
जब उपयोगकर्ता बैक बटन पर क्लिक करता है तो मुझे यह समस्या आती है, ऐसा लगता autocomplete="off"है कि उस स्थिति में काम नहीं करता है।
4

1
मुझे एक फॉर्म नहीं चाहिए, मेरे पास बस एक ही बटन है और फ़ायरफ़ॉक्स "याद है" यह अक्षम है। मैं इसे JS के माध्यम से रीसेट कर सकता हूं लेकिन पूरी तरह से।
vsync

@vsync बटन / इनपुट तत्व पर इसे सेट करने का प्रयास करें। काम भी करना चाहिए!
हेनरिक हेमबर्गर 12

4
आपको बटन पर भी ऐसा करना होगा। मुझे यह विश्वास करना मुश्किल है कि यह एक विशेषता है और बग नहीं है?
लियाम

1
यह छिपे हुए इनपुट को भी प्रभावित करता है
लियाम

10

बैक बटन से निपटने के लिए, यह करें ( यहाँ से )

    window.addEventListener('pageshow', PageShowHandler, false);
    window.addEventListener('unload', UnloadHandler, false);

    function PageShowHandler() {
        window.addEventListener('unload', UnloadHandler, false);
    }

    function UnloadHandler() {
        //enable button here
        window.removeEventListener('unload', UnloadHandler, false);
    }

मुझे नहीं पता कि इस जवाब में केवल एक ही वोट क्यों है जबकि दूसरे जवाब में 99 हैं। अनलोड पर अक्षम स्थिति को पुनर्स्थापित करना स्वत: पूर्ण को अक्षम करने से बेहतर है, क्योंकि स्वत: पूर्ण एक वांछनीय कार्यक्षमता है।
निक

मुझे लगता है कि //enable button hereयहाँ बेमानी है; संदर्भित डॉक्स की मेरी समझ यह है कि बस ईवेंट श्रोता की उपस्थिति पृष्ठ को BFcache में संग्रहीत करने से रोकेगी।
myf

ध्यान दें कि फ़ायरफ़ॉक्स में अनलोड हैंडलर जोड़ने से अन्य दुष्प्रभाव होते हैं: developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/1.5/…
robocat

2

जैसा कि आप autocomplete="off"अपने बटनों में जोड़ने से पहले उल्लेख किया है ।

आपकी HTML फ़ाइलों / टेम्पलेट्स में s के मामले में इसे स्वचालित करने के लिए एक sh+ perlस्निपेट है <button>(कुछ मान्यताओं के तहत):

find /path/to/html/templates -type f -name '*.html' -exec perl -pi -e \
  's/(?<=<button )(.*?)(?=>)/@{[(index($1,"autocomplete=")!=-1?"$1":"$1 autocomplete=\"off\"")]}/g' \
  {} +

मान्यताओं हैं:

  • ओपनिंग <button>टैग्स उसी लाइन पर शुरू और खत्म होते हैं। यदि यह मामला नहीं है (यानी उन्हें कई लाइनों में विभाजित किया जा सकता है) तो मदद के /gसाथ प्रतिस्थापित करना /gsचाहिए ( sसंशोधक के कारण .अच्छी तरह से नई कहानियों से मेल खाता है)

  • वैध एचटीएमएल (जैसे के बीच कोई अजीब वर्ण देखते हैं <और >) और से भी नहीं छोड़ा जाएगा अधिक से अधिक ( >) खोलने टैग के अंदर।


0

यह वास्तव में फ़ायरफ़ॉक्स में एक खुला बग है। MDNautocomplete में एक नोट भी है : (दूसरे पीले बॉक्स में स्क्रॉल करें):

नोट: autocompleteविशेषता यह भी नियंत्रित करती है कि फ़ायरफ़ॉक्स अन्य ब्राउज़रों के विपरीत - डायनेमिक डिसेबल अवस्था को बनाए रखेगा और (यदि लागू हो) किसी <input>एलिमेंट, <textarea>एलिमेंट या पूरे <form>पेज लोड की डायनेमिक चेकनेस । दृढ़ता सुविधा डिफ़ॉल्ट रूप से सक्षम है। इस सुविधा को अक्षम करने के लिए autocompleteविशेषता का मान सेट करनाoff । यह तब भी काम करता है जब स्वत: पूर्ण विशेषता सामान्य रूप से अपने प्रकार के गुण द्वारा लागू नहीं होगी। बग 654072 देखें ।

यदि आप बूटस्ट्रैप का उपयोग कर रहे हैं, तो आपको इसमें रुचि हो सकती है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.