0

我需要做的是,当我单击一个按钮或执行某个操作时,我想让 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 中的正确位置。

4

2 回答 2

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 的百分比。

于 2012-12-16T02:34:41.573 回答
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);"];
}
于 2014-05-05T01:09:26.800 回答