如何引用HTML锚点

4
我将一个HTML字符串加载到UIWebView中,通过loadHTMLString方法。它生成了一个非常长的网页。一旦该字符串被加载,我需要导航到一个具有"name"属性设置的HTML锚点标签。在HTML中,我可能会有以下内容:
//3 pages of text here
<a name="go here"></a> lots more text here
//another 3 pages of text here

我希望网页在加载后自动滚动到“go here”。如果用户单击网页内的链接并加载外部URL,则映射功能正常。但在这种情况下,我需要首先滚动一个已加载的网页。

我仍然可以执行以下JavaScript代码:

[MyWebView loadHTMLString:dataString baseURL:[NSURL URLWithString:@"http://www.myscheme.com"]];
[webView stringByEvaluatingJavaScriptFromString:@"javascriptFunc('param1');"];

但是我需要类似的东西来导航到锚点。有什么建议吗?
2个回答

10

你可以通过以下方式跳转到已加载的HTML文件中的锚点:

[webView stringByEvaluatingJavaScriptFromString:@"window.location.hash='#foo'"];

这将执行跳转,但不带动画。


1

如果我没记错的话,只需在URL末尾添加#go%20here。

啊,你是说已经加载了。难道重新加载页面真的不可行吗?无论如何,浏览器应该已经缓存了大部分内容...


不需要重新加载。如果我使用上面的JavaScript方法并加上这个值location.hash="#myAnchor",它可以正常工作。将其添加到UIWebView的webViewDidFinishLoad中。 - 4thSpace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接