2011-09-22 5 views
1

4 개의 테이블이있는 웹 페이지가 있습니다. 각 행에는 숫자 값이있는 두 개의 텍스트 상자가 있습니다. 텍스트 상자는 서버의 데이터로 채워집니다. 그러나 이상한 일이 발생합니다.Firefox에서 F5를 새로 고친 후 내 데이터가 돌아 다니는 이유는 무엇입니까?

행에 데이터를 추가하는 경우 행 1을 말하면 페이지 새로 고침 ... 두 값이 6 행 아래로 이동합니다. 서버에서 생성 된 데이터를 살펴 보았지만 서버에서 생성 된 것은 아닙니다. 또한 HTML에도이 데이터가 표시되지 않습니다. (나는 새로 고침을 공격하기 전에 값 I 입력) 예를 들어

,

<input id="itemTypeRow6" class="ItemType" type="text" data-uniqueid="Some ID" value="">

값은 = "",하지만 웹 페이지에서 찾고, 텍스트 2를 표시합니다.

jQuery를 실행 중이지만 다양한 이벤트 바인딩을 제외한 document.ready 페이지에서 아무 것도 기억할 수 없습니다.

어떻게 이런 일이 발생할 수 있습니까? (Firefox [v4.0.1]은 IE7에서는 발생하지 않습니다.)

F5를 새로 고침 할 때만 나타납니다. 주소 표시 줄에 올라가서 <Enter>을 누르는 것은 발생하지 않습니다.

나는

+0

값이 바뀌거나 깨끗해질 것으로 예상 될 때 리프레쉬를 지나치게 고집하고 있습니까? –

+0

@ImportedNoob - 후자입니다. 데이터를 간단하게 잊어 버리면 문제가 해결됩니다. –

+0

html5 doctype을 사용합니까? – simoncereska

답변

4

파이어 폭스 일반 (하지 하드) 재 장전을 통해 양식 값을 유지하려고 <!DOCTYPE html> 헤더를 사용합니다. 사실, 모든 브라우저가이 작업을 수행합니다.

파이어 폭스가이 용도로 사용하는 특정 알고리즘은 DOM 변경에도 불구하고 잘 작동하지 않는다. 상태를 저장하기 위해 페이지를 언로드 할 때 DOM의 노드 위치를 사용하지만 페이지를 복원하여 페이지를 복원 할 때 위치를 사용합니다. 그래서 그 사람들이 일치하지 않는 범위에서, 당신은 이상한 행동을하게 될 것입니다 ....

+0

브라우저에 캐시가 만료되도록 지시 할 수있는 방법이 있습니까? –

+3

폼 또는 개별 컨트롤에서 autocomplete = "off"로 설정하여 다시로드 할 때 자동 채우기를 방지 할 수 있습니다. 물론 그것도 자동 완성 기능을 끌 것입니다 ... 그 외에, 나는 해커가 아닌 좋은 방법을 모른다. –

관련 문제