我想知道如何以编程方式滚动到WebView中给定的锚点。如何将HTML字符串的WebView滚动到特定的锚?
我显示的内容是由
[[webView mainFrame] loadHTMLString:htmlString baseURL:someURL];
呈现,因此,我不能简单地通过网址指向出来导航到#anchors。
我在寻找沿
[[webView mainFrame] scrollToAnchor:@"anchor"]
线的方法,但显然它不存在。
TIA
我想知道如何以编程方式滚动到WebView中给定的锚点。如何将HTML字符串的WebView滚动到特定的锚?
我显示的内容是由
[[webView mainFrame] loadHTMLString:htmlString baseURL:someURL];
呈现,因此,我不能简单地通过网址指向出来导航到#anchors。
我在寻找沿
[[webView mainFrame] scrollToAnchor:@"anchor"]
线的方法,但显然它不存在。
TIA
使用JavaScript桥梁工程,但如果你愿意,你也可以做从Objective-C中的等价物:
DOMDocument *doc = [[webView mainFrame] DOMDocument];
DOMElement *element = [doc getElementById:@"anchor"];
[element scrollIntoView:YES];
这当然是我寻找的干净方式。谢谢! – lambda64 2010-09-04 08:13:29
好了,找到了一个解决办法,但我不知道这是做正确的方式。通过获取对javascript上下文的引用,我可以在webFrame中调用javascript方法。
[[webView windowScriptObject] evaluateWebScript:@"document.getElementById('TheId').scrollIntoView(true);"];
- (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);"];
}
你是说你已经尝试包括'baseURL'的ID ,但那不起作用? – 2010-09-03 14:53:42
不,我没有想到baseURL注意那种信息,doh。 – lambda64 2010-09-04 08:12:04