Firefox의 버그-새로 고침 할 때 입력의 비활성화 된 속성이 재설정되지 않음


103

Firefox에서 버그라고 생각되는 것을 발견했으며 이것이 실제로 버그인지, 그리고 이에 대한 해결 방법이 있는지 궁금합니다.

다음 소스로 기본 웹 페이지를 만드는 경우 :

<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>

당신이 경우 disabletextbox동적으로 다음 페이지를 새로 고침의는 textbox대신 사용할 수 없습니다의 원래 상태로 다시 재설정 비활성화 유지됩니다. IE8과 Chrome에서 이것을 시도했으며 예상대로 작동하여 textbox새로 고칠 때 다시 비활성화되지 않도록 재설정합니다 .

또 다른 흥미로운 정보는 입력이 a checkbox대신 a 인 경우에도 동일한 작업을 수행한다는 것 textbox입니다.


2
input단순히 새로 고침 할 때 요소 의 상태를 기억하는 Firefox "기능"이 아니라고 확신 하십니까?
thirtydot

@thirtydot : 저도 그것에 대해 궁금해서 "size"속성을 동적으로 설정하는 실험을 시도했는데 다른 모든 브라우저와 마찬가지로 새로 고침시 재설정됩니다. 그것이 내가 발견 한 것 같습니다 그래서 지금까지 파이어 폭스 장애인 속성뿐만 아니라 입력의 실제 값,하지만 크기 ... 유지하는 것입니다
스티븐 메사

5
와, 맞아요! 입력에 autocomplete = "off"를 설정했는데 더 이상 발생하지 않습니다. 파이어 폭스가 기본적으로이 기능을 켜는 것은 매우 불편합니다!
Stephen Mesa

3
예,으로 비활성화 할 수 있다는 것을 잊었습니다 autocomplete="off". 이 블로그 게시물 은 저에게 익숙해 보이므로 이전에 확실히 본 적이 있습니다. 자신의 질문에 대한 답을 작성해야합니다 (또는 내가해야합니까?)
thirtydot

1
이에 대한 공개 Mozilla 버그 보고서가 있습니다. bugzilla.mozilla.org/show_bug.cgi?id=654072
cvrebert

답변:


126

이것은 페이지 새로 고침에서 양식 입력 값을 기억하는 Firefox 의 "기능" 입니다. 이 동작을 수정하려면 autocomplete="off"입력을 포함하는 양식을 설정 하거나 입력에 직접 설정하면됩니다.

이렇게하면 자동 완성이 작동하지 않고 브라우저가 입력 필드의 상태를 기억하지 못합니다.

또는 CTRL + F5를 클릭하여 "하드 새로 고침"할 수 있습니다. 이것은 현재 페이지를 완전히 재설정합니다.


4
사용자가 뒤로 버튼을 클릭 할 때이 문제가 발생했습니다 autocomplete="off".이 경우에는 작동하지 않는 것 같습니다 .
solarc 2012 년

1
나는 양식을 원하지 않는다. 나는 단지 하나의 버튼을 가지고 있고 Firefox는 그것이 비활성화되어 있다는 것을 "기억"한다. JS를 통해 재설정 할 수 있지만 .. 못생긴 다.
vsync 2013 년

@vsync 버튼 / 입력 요소에서 설정해보십시오. 작동해야합니다!
Henrik Heimbuerger 2013

4
버튼에서도이 작업을 수행해야합니다. 이것이 버그가 아니라 기능이라고 믿기가 어렵습니까?
Liam

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 표를 가지고 있는지 모르겠습니다. 자동 완성이 바람직한 기능이기 때문에 언로드시 비활성화 된 상태를 복원하는 것이 자동 완성을 비활성화하는 것보다 낫습니다.
Nick

//enable button here여기에서는 중복 되는 부분 이라고 생각합니다 . 언급 된 문서의 나의 이해는 단순히이다 존재 이벤트 리스너의 페이지가 BFcache에 저장되는 것을 방지 할 수 있습니다.
myf

언로드 핸들러를 추가하면 Firefox에서 다른 부작용이 발생합니다. 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수정 원인 .줄 바꿈에 맞게뿐만 아니라를)

  • 유효한 HTML (예 : <와 사이에 재미있는 문자가 없습니다.> ) 및 >여는 태그 내부에 이스케이프 처리되지 않은 큰 ( ) 이 없습니다 .


0

이것은 실제로 Firefox 의 공개 버그 입니다. MDNautocomplete 에도 다음과 같은 메모가 있습니다 . (두 번째 노란색 상자로 스크롤) :

참고 :이 autocomplete속성은 또한 Firefox가 다른 브라우저와 달리 동적 비활성화 상태를 유지하고 페이지로드 전체에 걸쳐 <input>요소, <textarea>요소 또는 전체 의 동적 검사유지 할지 여부도 제어합니다 <form>. 지속성 기능은 기본적으로 활성화되어 있습니다. 속성 값을 설정autocompleteoff 하면이 기능이 비활성화됩니다. 이는 자동 완성 속성이 유형에 따라 일반적으로 적용되지 않는 경우에도 작동합니다. 버그 654072를 참조하십시오 .

Bootstrap을 사용하는 경우 다음 항목에 관심이있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.