2012-09-28 1 views
2

Google 데스크톱의 단일 파일 내에 HTML과 관련된 모든 이미지/CSS/스크립트/기타를 저장하는 데 매우 편리한 방법 인 Google Apps에서 webarchives를 사용하고 있습니다. 프로젝트에 넣어, 다음을 넣있는 UIWebView에 같은 하나의 호출 :iOS 6의 UIWebView는 webarchives에 상대 URL이있는 이미지를 표시하지 않습니다.

NSData *webArchiveData = /* ... Load data from a single file ... */ ; 
[webView 
    loadData:webArchiveData 
    MIMEType:@"application/x-webarchive" 
    textEncodingName:@"utf-8" 
    baseURL:nil 
]; 

이 그러나 아이폰 OS 6 작동이 중지 다음 HTML이로드하지만, 상대 URL을 통해 참조 된 이미지가 표시되지 않습니다 더 이상.

답변

2

webarchive 내의 JavaScript 일부에서 location.href를 추적하여 iOS 5 이하에서 webarchive로 저장된 원본 HTML의 URL임을 확인했습니다. 그것은 기본 URL로 제공되었으므로 HTML (이미지 등)에서 참조 된 리소스의 상대 URL을 제대로 분석 한 다음 웹 아카이브에서 찾을 수있었습니다 (원래 절대 URL이있는 위치에 저장 됨).

iOS 6에서 location.href를 추적하면 applewebdata://1B648BC1-F143-4245-A7AD-6424C3E3D227과 같은 URL이 제공되므로 모든 상대 URL은이 URL과 관련하여 해결되며 더 이상 webarchive에서 찾을 수 없습니다. 이 같은 :, base을 : MIME 타입 : textEncodingName 내가 찾은 해결 방법 중

하나는 loadData에 전무 다른 무언가를 전달하는 것입니다

[webView 
    loadData:serializedWebArchive 
    MIMEType:@"application/x-webarchive" 
    textEncodingName:@"utf-8" 
    baseURL:[NSURL URLWithString:@"file:///"] // Passing nil here won't work on iOS 6 
]; 

그것은 모두 아이폰 OS 6에서 iOS 5와 덤핑 위치에서 작동합니다. href는 이전과 동일한 원본 URL의 절대 URL을 제공합니다.

모든 단점/제안?

+0

위키피디아 콘텐츠를 오프라인으로 표시하기 위해 앱에서 webarchives를 사용했습니다. 불행히도 위키 피 디아 (wikipedia)가 그들의 외관을 업그레이드했기 때문에 이것이 작동하지 않는 것 같습니다. iOS에서 웹 아카이브를 열면 이미지가로드되지 않습니다. 여기에 당신의 방법을 시도했지만 같은 문제가있었습니다. 그래도 올바른 방향으로 보인다. 웹 아카이브는 데스크톱 사파리에서 이미지를 올바르게로드하지만 모바일은로드하지 않습니다. 아마도 상대 경로와 관련이 있습니다. – Jonah

+0

웹 아카이브를 먼저 사전 처리해야 할 수도 있습니다. 실제로 URL과 해당 얼룩이있는 .plist 파일 일뿐입니다. 먼저 수동으로 열 수 있습니다. 거기에서 뭔가를 수정할 수 있는지 확인한 다음 수동 수정이 작동하면 앱에서 프로그래밍 방식으로 동일한 작업을 수행 할 수 있습니다. – aleh

+0

나는 탐험을 좀했다. 나는 차이점을 찾기 위해 동일한 위키 피 디아 페이지의 이전 webarchives를 비교하기까지했다. 지금까지 행운이 없습니다. 도와 주셔서 감사합니다. – Jonah

관련 문제