如何使用目标c以编程方式触发href链接

时间:2012-12-12 11:19:37

标签: jquery objective-c hyperlink

我需要做的是当我点击一个按钮或做某个动作时,我希望将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中的正确位置,  任何建议将不胜感激 谢谢你

2 个答案:

答案 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);"];
}