У меня есть UIWebView, и я хочу, чтобы ВСЕ ссылки открывались на новой странице.
У меня есть этот код для определения, когда пользователь щелкает ссылку и открывает эту ссылку на новой странице:
- (BOOL) webView:(UIWebView*)webView shouldStartLoadWithRequest: (NSURLRequest*) request navigationType: (UIWebViewNavigationType)navigationType {
//If the user clicked a link don't load it in this webview
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSURL* URLToGoTo = [request URL];
self.fullWebView.url = URLToGoTo;
[self.navigationController pushViewController:fullWebView animated:YES];
return NO;
}
//Else this is the webview being loaded for the first time, let it load.
return YES;
Проблема в том, что некоторые веб-сайты используют JavaScript для открытия ссылок, подобных этой:
win = window.open("/magic/card.asp?name="+cardname+"&set="+set+"&border="+border, windowName, params);
if (!win.opener)
{
win.opener = window;
}
К сожалению, ссылки этого типа не имеют свойства UIWebViewNavigationTypeLinkClicked и будут открываться в том же окне моего UIWebView.
Я попытался просмотреть свойство схемы URL-адреса, чтобы определить, является ли оно «javascript», но оно выглядит идентично URL-адресу, используемому обычными ссылками.
Может кто-нибудь придумать, как определить, когда веб-страница открывается функцией javascript?
Полагаю, в худшем случае я могу использовать логическое значение, чтобы определить, загружается ли мой UIWebView впервые и загружать все последующие ссылки на новую страницу, но должно быть лучшее решение
Спасибо!