我想知道如何以編程方式滾動到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