Safari 및 Chrome Back 버튼에서 양식 데이터를 수정합니다
-
13-09-2019 - |
문제
Safari & Chrome (Firefox 및 IE에서 작동) 에서이 이상한 문제를 겪습니다.
- 첫 번째 항목 'a'checked, item 'b'및 'c'가있는이 확인란 목록부터 시작합니다.
- 그런 다음 확인란 목록에 나타나는 항목을 주문하는 다른 페이지로 이동합니다.
- 목록의 항목 순서를 변경하여 이제 'b', 'a', 'c'로갑니다.
- 뒤로 버튼을 누릅니다
- 페이지가 서버에서 다시 가져 왔습니다 (캐싱 비활성화가 있음), 서버에서 보낸 응답을 확인하고 항목 'A'가 여전히 확인되어 더 이상 목록의 첫 번째 항목이 아닙니다.
- !!! 이상한 행동 !!! 새 순서 'b', 'a', 'c'가있는 브라우저에 페이지가로드되었지만 'A'는 확인되지 않고 첫 번째 항목 'B'가 확인됩니다.
어쨌든 뒤로 버튼을 눌러 수표 항목의 위치가 복원 된 것으로 보이며 서버에서 전송 된 양식 데이터가 폐기 된 것으로 보입니다.
페이지를 새로 고치면 순서가 'b', 'a', 'c'이고 항목 'a'가 확인되고 모든 것이 잘 보입니다.
두 경우 모두 페이지에 Ispostback이 False로 설정되어 있습니다.
웹 키트의 버그입니까?
캐시를 지우고 개인 브라우징 모드로 들어가서 기록을 지우려고 시도했습니다. 여전히 같은 행동.
해결책
Chrome에서도 같은 문제를 발견했습니다. 추가 테스트에서 웹 사이트가 세션을 사용하는 경우에만 발생했습니다. 뒤로 버튼을 누를 때마다 게시물 데이터를 다시 게시하는 대신 게시물 데이터가 제거됩니다.
테스트 할 페이지를 만들었습니다. http://www.duanehutchins.com/formtest.php정보를 입력하고 몇 번 게시하면 작동합니다. 그런 다음 뒤로 누르고 다시로드; 데이터가 다시 게시되지 않았습니다.
세션을 비활성화하면 제대로 작동합니다. 나는 버그를 Chrome에보고했다. 누군가가 도와 주면 볼 것입니다.
다른 팁
페이지 상태가 그 중 시간에 변경 되었음에도 불구하고 WebKit에 의해 양식 데이터가 "복원"되는 것과 비슷한 문제가있었습니다.
비슷한 게시물 Safari 및 Chrome 뒤로 버튼이 숨겨지고 양식으로 값을 제출합니다. 우리를 위해 일한 좋은 힌트를 주었다. 추가하여 autocomplete="off"
페이지의 모든 양식에 우리는 이것을 해결할 수 있습니다.
이 예를 참조하십시오 :
이것은 나에게도 일어나고 있습니다. 사용 사례가 매우 간단하고 가장 일반적이기 때문에 이것은 매우 근본적인 결함처럼 보입니다. 나는 이미 다른 프로젝트의 두 곳 에서이 문제를 겪고 있습니다. 세션을 비활성화하면 실제로이 문제를 피하면 진짜 대부분의 고객 이이 옵션이나 관리에 대해 알지 못하므로 수정하십시오.