【发布时间】:2012-02-22 22:03:12
【问题描述】:
我有一个 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 的 scheme 属性,看看它是否是“javascript”,但它看起来与常规链接使用的 URL 相同。
谁能想到一种方法来检测网页何时被 javascript 函数打开?
我想最坏的情况我可以使用布尔值来确定这是否是我的 UIWebView 第一次被加载并在新页面中加载所有后续链接,但必须有更好的解决方案
谢谢!
【问题讨论】:
标签: javascript objective-c uiwebview