如何将HTML字符串的WebView滚动到特定锚点?

时间:2010-09-03 08:47:18

标签: objective-c cocoa webkit

我想知道如何以编程方式滚动到WebView中的给定锚点。

我展示的内容由

呈现
[[webView mainFrame] loadHTMLString:htmlString baseURL:someURL];

因此我不能通过将它们指向URL中来导航到#anchors。

我正在寻找一种方法

[[webView mainFrame] scrollToAnchor:@"anchor"]

但显然不存在。

TIA

3 个答案:

答案 0 :(得分:3)

使用Javascript Bridge可以正常工作,但如果您愿意,也可以使用Objective-C:

DOMDocument *doc = [[webView mainFrame] DOMDocument];
DOMElement *element = [doc getElementById:@"anchor"];
[element scrollIntoView:YES];

答案 1 :(得分:2)

- (void)viewDidLoad
{
   [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"YOUR_STRING_WITHOUT_ANCHOR"]]];
}

- (void)webViewDidStartLoad:(UIWebView *)_webView {
   [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('YOUR_ANCHOR_HERE_WITHOUT_#').scrollIntoView(true);"];
}

答案 2 :(得分:0)

好的,找到了解决方法,但我不知道这是否是正确的方法。通过获取对javascript上下文的引用,我可以在webFrame中调用javascript方法。

[[webView windowScriptObject] evaluateWebScript:@"document.getElementById('TheId').scrollIntoView(true);"];