给出一个像index.html
这样的本地URL地址现在我需要使用UIWebView
在iPad中加载它。我按照以下步骤操作:
创建NSURL
NSURL *url = [NSURL fileURLWithPath:@"http://mysite.com#page1"];
使用UIWebView加载本地HTML / JS / CSS等
[webView loadRequest:[NSURLRequest requestWithURL:url]];
但它不起作用,因为“#”转换为“%23”,所以URL字符串是
http://mysite.com%23page1
我的问题是,如何修复此自动转换问题并让UIWebView
访问包含散列片段“#”的网址?
答案 0 :(得分:11)
用户 URLWithString 将片段附加到您的网址,如下所示:
*NSURL *url = [NSURL fileURLWithPath:htmlFilePath];
url = [NSURL URLWithString:[NSString stringWithFormat:@"#%@", @"yourFragmentHere"] relativeToURL:url];*
希望它会有所帮助:)
编辑:Swift 3版本:
var url = URL(fileURLWithPath: htmlFilePath)
url = URL(string: "#yourFragmentHere", relativeTo: url)
答案 1 :(得分:3)
在swift中的参考:
let path = NSBundle.mainBundle().pathForResource("index", ofType: "html", inDirectory: "web")
var url = NSURL(fileURLWithPath: path!)
url = NSURL(string: "#URL_FRAGMENT", relativeToURL: url!)
let request = NSURLRequest(URL: url!)
self.webView.loadRequest(request)
答案 2 :(得分:1)
它没有在Web视图中加载,因为您使用了错误的方法来创建NSURL对象,fileURLWithPath用于系统路径。使用这个 -
NSURL *url = [NSURL URLWithString:@"http://mysite.com#page1"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
有关NSURL阅读文档的更多信息 -
答案 3 :(得分:1)
对于swift 3 解决方法1: 您可以在加载webview后调用此行
webView.stringByEvaluatingJavaScript(fromString: "window.location.href = '#myHashtag'")
溶液2: 如果你想直接加载使用这个
webView1.loadRequest(URLRequest(url: URL(string: url! + "#myHashtag")!))
<强> ObjC:强> 解决方案1:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[webView stringByEvaluatingJavaScriptFromString:@&#34; window.location.href =&#39;#myHashtag&#39;;&#34;]; }
溶液2:
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat: @"%@#myHashtag",myURL]]]];