我想知道如何以编程方式滚动到WebView中的给定锚点。
我展示的内容由
呈现[[webView mainFrame] loadHTMLString:htmlString baseURL:someURL];
因此我不能通过将它们指向URL中来导航到#anchors。
我正在寻找一种方法
[[webView mainFrame] scrollToAnchor:@"anchor"]
但显然不存在。
TIA
答案 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);"];