UIWebView无法加载带有三个#符号(hashtags)的URL,但Safari工作正常

时间:2014-10-16 08:28:02

标签: ios objective-c url uiwebview hashtag

我有这个网址:http://m.10bet.com/#game_event#6404838#99 数字总是不同,但总有三个#hashtag符号。 UIWebView不会加载它,但移动版Safari会这样做,这是我的代码:

UIWebView *myWebView = [[UIWebView alloc] initWithFrame:frame];
NSURL * url = [NSURL URLWithString:@"http://m.10bet.com/#game_event#6404838#99"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];

我知道如何在URL中处理一个#(但不是全部三个):

UIWebView *myWebView = [[UIWebView alloc] initWithFrame:frame];
NSURL *fullURL = [NSURL URLWithString:@"#game_event" relativeToURL:@"http://m.10bet.com/"];
[myWebView loadRequest:[NSURLRequest requestWithURL:fullURL]];

我也尝试用URL替换#%,但是也不起作用。

我现在的解决方法是调用URL Shortener来返回缩短的URL并将其加载到UIWebView中,这可以正常工作,但速度很慢。

任何想法,伙计们?

2 个答案:

答案 0 :(得分:3)

试试这个:

 NSString *str = @"http://m.10bet.com/";
 NSURL * url = [NSURL URLWithString:str];
 [webview loadRequest:[NSURLRequest requestWithURL:url]];

在UIWebViewDelegate上,添加:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [webView stringByEvaluatingJavaScriptFromString:@"window.location.href = '#game_event#6404838#99'"];
}

答案 1 :(得分:1)

'#'是一个特殊字符,因此需要在加载到UIWebView之前对其进行编码。移动safari将在开始加载之前自动执行。因此将'#'替换为'%23'并尝试在UIWebView中加载它。

希望这会对你有所帮助:)。