我需要做的是当我点击一个按钮或做某个动作时,我希望将webview转移,就像我点击一个href链接一样,该函数应该使用href id来知道要去哪个链接至。 这是我到目前为止所尝试的内容:
[WebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.location.hash='%@'",footNoteNum]];
float offsetX = [[WebView stringByEvaluatingJavaScriptFromString:@"window.pageXOffset"] floatValue];
NSLog(@"offsetX %f", offsetX);
int page = ceil(offsetX/748);
page++;
NSLog(@"page %i", page);
[self scrollToPage:page];
但是当webview大于25页时,它开始为offsetX提供错误的数字。 所以我想如果我可以做一个可以动态点击的href链接,所以当我使用滚动条时,它会把我带到webview中的正确位置, 任何建议将不胜感激 谢谢你
答案 0 :(得分:1)
我完成类似问题的方式(点击特定的tableView行并让它转到同一场景中UIWebView中的特定位置)是在html中嵌入锚点,然后直接导航到它们。当然,这假设您可以控制以这种方式导航到您的脚注。
锚点只是坐在你的html中的每个页面上,就在每个脚注的文本之前,如下所示:
<a name=footnote12>
然后在您的代码中,您将拥有:
// baseURLForPageWithoutAnchor is the NSURL* for the page prior to going to any footnotes
NSString* anchor = [@"#" stringByAppendingFormat:@"footnote%d", footNoteNum];
NSString* baseForAnchor = baseURLForPageWithoutAnchor.absoluteString;
NSURL* anchorURL = [NSURL URLWithString:[baseForAnchor stringByAppendingString:anchor]];
[self.nestedWebView loadRequest:[NSURLRequest requestWithURL:anchorURL]];
这将直接跳转到锚点,并且需要计算您尝试按百分比滚动的UIWebView中的百分比。
答案 1 :(得分:0)
- (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);"];
}