2017-05-18 3 views
0

나는 입력 필드와 동적 인 내용을 포함하는 foo.html 페이지를 가지고있다. 이 페이지에서 다른 곳으로 이동하기 브라우저의 뒤로 버튼으로 돌아온 후, 나는 다양한 브라우저에서 일관성없는 행동을 본 적이 :뒤로 버튼을 사용하여 돌아올 때 수정 된 웹 페이지의 어떤 부분이 유지됩니까?

  • foo.html 파일의 초기 버전 (사용자 입력없이 동적 콘텐츠)에 일부 반환.
  • 일부는 foo.html (사용자 입력 & 동적 내용)의 최종 버전으로 돌아갑니다.
  • 일부 사용자는 foo.html의 새 버전을 반환합니다 (사용자 입력은 유지하지만 동적 콘텐츠는 유지하지 않음).

브라우저가 어떻게 반응하는지 또는 "구현 정의 동작"에 대해 지정된 기본 동작이 있습니까?


추가 세부 사항 : ("동적 콘텐츠") 스팬에 반영되는 텍스트 상자 ("사용자 입력")에 입력

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 

<input type="text" id="mytext" /> 
<span id="myspan"></span> 

<a href="http://www.stackoverflow.com">Leave</a> 

<script type="text/javascript"> 
    $(function() { 
     $("#mytext").on("input", function() { $("#myspan").text(this.value); }); 
    }); 
</script> 

텍스트 : 여기 테스트에 사용 된 최소한의 예입니다 . 나는 다음과 같은 결과를 다른 브라우저로 테스트 한 :

  • 크롬 (58), 에지 (40), IE 11 (HTTP URL을 통해 액세스) : 동적 콘텐츠를 유지하지 않습니다, 사용자 입력을 유지합니다.
  • Firefox 53, Opera 모바일 에뮬레이터 12.10 : 사용자 입력 및 동적 콘텐츠를 모두 유지합니다.
  • IE 11 (파일 URL을 통해 액세스) : 사용자 입력이나 동적 콘텐츠를 유지하지 않습니다.

참고 : 페이지가 복잡해지고 AJAX가 많은 경우 (예 : Firefox가 동적 콘텐츠를 유지하지 않거나 IE가 사용자 입력을 유지하지 않는 경우) 일관성없는 동작을 보았습니다.

답변

0

일반적으로 동작은 표준화되어 있습니다 (HTML5 사양의 5.6.10 섹션 "History Traversal"). 불행하게도, 을 결정하는 것은 브라우저에 달려 있으며, 상태가 유지됩니다. 사양의 5.5 절 "Session history and navigation"에서 인용 :

지속 된 사용자 상태와 엔트리 것은 또한 사용자 에이전트가 상태를 정의한 것입니다. 이 명세는 어떤 종류의 상태를 저장할 수 있는지를 명시하지 않는다.

예를 들어 일부 사용자 에이전트는 스크롤 위치 또는 양식 컨트롤의 값을 유지하려고 할 수 있습니다.

따라서 질문에 언급 된 모든 동작은 HTML5 사양에 따라 유효합니다.