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

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입니다.



답변

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

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

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


답변

뒤로 버튼을 처리하려면 다음을 수행하십시오 ( 여기에서 )

    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);
    }


답변

앞서 언급했듯이 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 (예 : <와 사이에 재미있는 문자가 없습니다.> ) 및 >여는 태그 내부에 이스케이프 처리되지 않은 큰 ( ) 이 없습니다 .


답변

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

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

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


답변