2010-09-03 66 views
1

我想知道如何以编程方式滚动到WebView中给定的锚点。如何将HTML字符串的WebView滚动到特定的锚?

我显示的内容是由

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

呈现,因此,我不能简单地通过网址指向出来导航到#anchors。

我在寻找沿

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

线的方法,但显然它不存在。

TIA

+0

你是说你已经尝试包括'baseURL'的ID ,但那不起作用? – 2010-09-03 14:53:42

+0

不,我没有想到baseURL注意那种信息,doh。 – lambda64 2010-09-04 08:12:04

回答

3

使用JavaScript桥梁工程,但如果你愿意,你也可以做从Objective-C中的等价物:

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

这当然是我寻找的干净方式。谢谢! – lambda64 2010-09-04 08:13:29

0

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

[[webView windowScriptObject] evaluateWebScript:@"document.getElementById('TheId').scrollIntoView(true);"]; 
1
- (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);"]; 
} 
相关问题