2012-11-02 4 views
2

잘 작동하는 HTML5 오프라인 응용 프로그램이 있는데 캐시가 유효한지, 실제로 장치 나 컴퓨터를 강제로 오프라인으로 만들 때까지 일반적으로 작동합니다. 던졌습니다ApplicationCache 및 오프라인 일 때 오류가 발생했습니다.

window.applicationCache.onerror = function (e) { 
    console.log(JSON.stringify(e)); 
    model.errorInfo(JSON.stringify(e)); 
    model.cacheError(true); 
}; 

그러나,이 오류 핸들러는 발사 장치가 오프라인 상태 일 때 :

나는 내가 처리하고 발생할 수있는 임의의 오류에 대한 프롬프트를 표시 할 수 있습니다 window.applicationCache.onerror에 부착 된 핸들러가 오류 대화 상자, 정말 안된다. 다음과 같이 밖으로 뱉어

json으로는 다음과 같습니다

{"cancelBubble":false,"returnValue":true, 
"srcElement":{"onobsolete":null,"status":1},"defaultPrevented":false, 
"timeStamp":1351875347729,"cancelable":false,"bubbles":false, 
"eventPhase":2,"currentTarget":{"onobsolete":null,"status":1}, 
"target":{"onobsolete":null,"status":1},"type":"error"} 

내가 여기 내가이 paticular 사건을 처리하기 위해 찾을 수있는 너무 분명 아무것도 볼 수 없습니다. 여기에있는 내용을 기반으로 오류를 무시하거나 완전히 다른 일을해야합니까?

답변

1

...이 오류 처리기는 장치가 오프라인 일 때도 발생합니다. 오류 처리기는 오류 대화 상자를 표시합니다. 실제로는 그렇지 않아야합니다. applicationCache 매니페스트를 얻기 때문에 가능성이 업데이트 매니페스트에 따라 행동 할 수없는 것처럼

이 실제로이 상황에 대한 appropriate event입니다. 이 상황에 대해 다른 이벤트를 갖는 것이 좋겠지 만 지금은 하나도 없습니다. 당신은 캐시 상태에 대해 사용자에게 유용한 정보를 표시하고 싶다면

: 초기 캐시에 이전에 캐시 응용 프로그램 (applicationCache.status===1) 또는 업데이트에 에러가 발생했을 경우 error 이벤트가 발생이 (applicationCache.status===0)을 볼 수 applicationCache.status마다 시간을 확인 .

+1

아시다시피, 스펙을 읽었습니다. 지금 보았지만 그 부분을 놓쳤습니다. 비록 서버 오류와 같은 것이 캐시 된 페이지에서 어떻게 처리되어야합니까? (예 : 클라이언트가 업데이트 된 매니페스트를 다운로드 할 때 서버가 500을 버리는 경우) –

+1

[캐시 오류 단계] (http : // www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#cache-failure-steps)는 'error' 이벤트 발생을 포함하여 4xx 또는 5xx 오류가 있거나 동등한. API가'applicationCache' 객체에 상태 코드를 제시하면 좋겠지 만 지금은 하나의'error' 이벤트에서 네트워킹이나 구문 분석 오류가 있는지 여부에 관계없이 모든 다양한 오류가 발생합니다. 어쩌면 언젠가 이것이 개선 될 것입니다. – ampersand

관련 문제