2009-04-17 6 views
4

loadHTMLString을 통해 UIWebView에 HTML 문자열을로드하고 있습니다. 매우 긴 웹 페이지를 생성합니다. 일단 해당 문자열이로드되면 "name"속성이 설정된 HTML 앵커 태그로 이동해야합니다. HTML의 경우 다음과 같이 표시 될 수 있습니다.HTML 앵커를 참조하는 방법은 무엇입니까?

//3 pages of text here 
<a name="go here"></a> lots more text here 
//another 3 pages of text here 

일단로드되면 여기로 스크롤하려면 웹 페이지가 필요합니다. 사용자가 웹 페이지 내부의 링크를 클릭하고 외부 URL을로드하면 매핑이 올바르게 작동합니다. 그러나이 경우 처음에는 이미로드 된 웹 페이지를 아래로 스크롤해야합니다.

[MyWebView loadHTMLString:dataString baseURL:[NSURL URLWithString:@"http://www.myscheme.com"]]; 
[webView stringByEvaluatingJavaScriptFromString:@"javascriptFunc('param1');"]; 

을하지만 앵커 태그로 이동 비슷한 뭔가가 필요 :

나는 아직도 이런 식으로 자바 스크립트를 실행할 수 있습니다. 어떤 제안? 내가하지 틀리지 경우

답변

10

당신은 이미로드 된 HTML 파일에서 앵커로 이동할 수 있습니다 수행하여 ... 어쨌든 그것의 대부분을 캐시해야 :

[webView stringByEvaluatingJavaScriptFromString:@"window.location.hash='#foo'"]; 

이 점프를 할 것, 산세 애니메이션.

1

, 단지 추가 #은 URL

편집의 끝에 %의 20here을 이동 : 당신이 이미로드 의미 아. 페이지를 새로 고침하는 것이 정말로 문제가되지 않습니까? 브라우저는

+0

아니요. 다시로드하지 마십시오. 위의 javascript 메서드를 location.hash = "# myAnchor"와 같이 사용하면 정상적으로 작동합니다. UIWebView의 webViewDidFinishLoad에 추가하십시오. – 4thSpace

관련 문제