캐시 (applicationCache 및 HTML5 캐시 매니페스트를 통해 얻음)를 다른 도메인 (로컬 파일 시스템과 WWW)에 사용할 수 있는지 확인하려고합니다.원격 리소스의 applicationCache 실행 가능성 감지
로컬 캐시 시스템에 캐시 검사 리소스 (게이트웨이 메커니즘이 있음)가 있으며 webview를 통해로드됩니다. 이것은 내가 해결할 수없는 요구 사항입니다.
최근까지이 게이트웨이 로컬 파일은 장치가 온라인 상태인지 확인하고 window.location을 사용하여 원격 리소스로 리디렉션하고 장치가 온라인 상태가 아닌 경우 그래픽을 표시합니다 (또한 로컬 패키지 됨). "이 기능을 사용하려면 인터넷에 연결해야합니다."
그러나 최근에 나는 원격 리소스에 대한 오프라인 지원을 구현했습니다. 그것은 작동합니다. 게이트웨이 파일을 오프라인 상태에서 원격 리소스로 리디렉션하면 캐시에서 원격 리소스를로드합니다.
온라인을 통해 아직 액세스하지 않은 상태에서도 오프라인으로 장치를 사용하려고 할 수 있으므로 캐시가 존재하는지 테스트하기 위해 게이트웨이 코드에 논리를 배치해야합니다. 내가 예상했던 도메인 간 문제가 발생했지만 문제를 해결하는 방법을 모르겠습니다. 나는 (그것이 존재한다면)은 $ 아약스()가 캐시 된 버전을 가져올 것이라는 순진한 희망에 따라
if (window.navigator.onLine === false) {
// See if we're able to reach the content (if it's cached, we'll get HTML, else it'll fail)
cacheCheck = $.ajax(contentLoc, {async:false});
// the request failed so we have no cache at all. let's just show the offline graphic.
if (cacheCheck.status === 0) { // no cache available :(
$("#launchpage").addClass("offline");
} else { // we have a cache :)
redirect();
}
} else {
redirect();
}
내가 쓰고이었다 및 I : 여기
은 내가 시도 코드 반환 된 상태 코드가 오류 상태 코드가 아닌지 확인하기 위해 반환 된 객체를 테스트 할 수 있습니다. 객체가 반환 될 때그러나이 작동하지 않습니다 "오류 : NETWORK_ERR : XMLHttpRequest의 예외 (101)"
내가 리디렉션하는 것이 안전 여부를 확인하는 데 사용할 수있는 다른 방법이 있습니까? 리디렉션이 실패하면 로컬 이미지를 표시해야합니다 (캐시가 없어서)