2010-07-19 1 views
11

오프라인으로 작업하기 위해 캐시 매니페스트를 사용하는 iPhone webapp가 있습니다. 내 홈 화면에 webapp을 추가하고,이를 사용하여 (페이지의 특정 위치로 스크롤) 홈 화면으로 돌아갑니다. 잠깐 동안 앱을 다시 열면 그 페이지의 스크롤 된 위치에서 내가 어디에 있었는지 알 수 있습니다. 그런 다음 앱이 다시로드되고 메인 페이지 상단으로 스크롤됩니다. 이 "재로드"를 방지 할 수있는 방법이 있습니까? 이것은 비행기 모드에서도 발생합니다 (즉 모든 것이 캐시에서 작동 함). '캐시 된 iPhone webapp가 다시로드되지 않도록하기 (상단으로 스크롤)

window.addEventListener ('언로드 '기능() {$ (: 내 페이지에서 이것을 사용 시작하면서

+0

항상 정상적인 Safari 앱에서 나를 괴롭 혔습니다. 항상 이전 페이지를 다시로드하려고합니다. – Fosco

답변

3

(이 답변이 jQuery를 또는 다른 프레임 워크에 의존하지 않는다). 그것은 "재 장전 중"이 아닙니다. 앱이로드되지 않았습니다.

실제 로딩 이미지를 설정하려면 "apple-touch-startup-image"를 검색하십시오.

+0

아, 그래서 내가 떠난 상태가 기억에 남는 것은 환상적입니까? 닫히기 전에 실제로 스크롤 위치를 저장할 기회가 없습니까? –

+0

직접 로컬 스토리지에 저장할 수 있습니다. 스크롤하면 250ms 타이머를 리셋합니다. 타이머가 만료되면 스크롤 위치를 저장하십시오. 어쩌면 가장 가까운 앵커를 기준으로 페이지 변경을 설명 할 수 있습니다. 로드시 복원하십시오. window.navigator.standalone이 true 일 때만이 작업을 수행하십시오. –

0

//

window.scroll(0,0); 

더 오래된 내용을 확인하지 않으려면 부하에 표시됩니다 body '). hide();});

페이지의 마지막 상태는 비어 있으며 페이지를 다시 열었을 때 사용자에게 표시되는 내용입니다.

+1

앱이 캐시 매니페스트의 최신 파일을 사용하고 있는지 확인하는 것도 좋은 방법입니다. window.applicationCache.addEventListener 'updateready' 함수() { window.applicationCache.swapCache() (TRUE) window.location.reload; } 거짓 ); – Espen

1

실제 'reload'이벤트가 있다고 생각하지 않습니다. onload와 onunload는 모두 얻을 수 있습니다.

onload 처리기가 처음 페이지에 방문하는 것처럼 시작됩니다.

onunload 처리기가 이전 콘텐츠를 지우는 열쇠입니다.

내 웹 앱으로 돌아 오는 사람들에게 대체 콘텐츠를 제공하고 싶습니다.

window.onunload=function(){ 
    document.getElementsByTagName('body')[0].className+=' unloading' 
} 

그리고 대부분의 시체를 숨기고 대체 콘텐츠를 표시하려면 CSS가 더러운 작업을 수행하도록하십시오.

당신은 당신이에 있던 마지막 장소의 단지 스크린 샷입니다 기본 시작 이미지를보고있는

2

내가 여기서 고민하는 이유는 "apple-mobile-web-app-capable"모드에서 실행하는 것과는 대조적으로 사파리를 정기적으로 사용하면 앱이 실제로 "메모리 내에"머문 것으로 보인다. 나중에 홈 버튼을 누르는 것만 큼 간단한 다음 응용 프로그램으로 다시 전환하면 다시로드됩니다. 사파리에서 같은 일을하는 것은 종종 다시로드되지 않습니다. 그래서 나는 "apple-mobile-web-app-capable"를 사용함으로써 더욱 나 빠졌다.