2012-09-20 2 views
1

내 문제가 새로 고쳐지지 않는이가있는 UIWebView는 덮어 쓰기됩니다 로컬 이미지를로드하지만

내가있는 내가 내 응용 프로그램의 문서 폴더에서 로컬 이미지를 참조하고있어,있는 UIWebView에 HTML 문자열을로드 해요 .

<html><body><img src="image.png"/></body></html> 

baseUrl 또는 아무 문제없이 잘로드됩니다. 문제는 내가 물건을 하나 만들고 같은 이름의 새 이미지를 생성하고 같은 문서 폴더에 저장하고 이전 이미지를 덮어 쓰면 (기존 이미지를 삭제하고 새 이미지를 저장할 때)입니다.

UIWebView가 여전히 화면에로드 된 상태에서 [webview reload]를 수행하거나 수동으로 html 문자열을로드하면 여전히 덮어 쓴 오래된 이미지가 나타납니다.

이미 시뮬레이터 폴더에서 확인했는데, image.png 이미 새 이미지가 있지만 이전 이미지는 없습니다. 그리고 캐싱에서 webview를 막을 수있는 모든 것을 이미했습니다.

물론 다른 이름으로 이미지를 저장하고 "image2.png"라고 말한 다음 src = "image2.png"로 html 문자열을 새로 고침하면 모두 표시됩니다.

무엇이 여기에 있습니까?

답변

0

아마도 시뮬레이터에 문제가있을 수 있습니다. 나는 비슷한 것을 한 번 보았습니다. 실제 장치에서 코드를 실행 해보십시오. 필자의 경우 시뮬레이터는 이름이 같은 데이터를 다시로드하는 것이 게으른 것처럼 보입니다.

+0

그것은 그것은 꽤 아닌 실제 장치 – drix

3

이미지 원본에 임의의 쿼리 문자열을 추가하십시오. 예.

function ImageSource(src){ 
    return src + "?time=" + (new Date()).getTime().toString(); 
} 
function ForceImageReloads(){ 
    var images = document.getElementsByTagName("img"); 
    for (var i=0;i<images.length;i++){ 
    var img = images[i]; 
    var s = img.getAttribute("src"); 
    img.src = ImageSource(s); 
    } 
} 
ForceImageReloads(); 

또는 유사한 :

+0

에 같은 일을하지만, 머리의 몇 시간이 유일한를 두드리는 후 내가 작품을 발견했다. 나는 애플이 더 좋은 해결책을 가질 때까지 내가해야할 일이라고 생각한다. – CFD

+0

나는이 변화에 숨을 멈추지 않을 것이다. 이것은 Apple 내부보다 웹이 작동하는 방식 (브라우저 캐싱)과 더 관련이 있습니다. –

+0

대부분의 브라우저는 일반적으로 부실 데이터를 없애는 새로 고침 버튼을 제공하지만. 재로드 기능이 브라우저 새로 고침과 비슷한 기능을한다고 생각했을 것입니다. (아니면 reload가하지 않으면 브라우저 캐시를 없애기 위해 뭔가 다른 것을 노출 시키십시오.) UIWebview가이 상황을보다 잘 처리하기 위해 뭔가를하고 있거나 노출해야하는 것처럼 보입니다. – CFD

관련 문제