2010-09-03 65 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);"]; 
} 
相關問題