UIWebView检测javascript何时加载新页面
我有一个UIWebView,我希望在新页面上打开所有链接 当用户单击某个链接并在新页面上打开该链接时,我可以检测以下代码:UIWebView检测javascript何时加载新页面,javascript,objective-c,uiwebview,Javascript,Objective C,Uiwebview,我有一个UIWebView,我希望在新页面上打开所有链接 当用户单击某个链接并在新页面上打开该链接时,我可以检测以下代码: - (BOOL) webView:(UIWebView*)webView shouldStartLoadWithRequest: (NSURLRequest*) request navigationType: (UIWebViewNavigationType)navigationType { //If the user clicked a link don't load
- (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函数何时打开网页吗
我假设在最坏的情况下,我可以使用布尔值来确定这是否是第一次加载my UIWebView并加载新页面中的所有后续链接,但必须有更好的解决方案
谢谢 是:要捕获Javascript诱导的页面加载,您应该在webView中检查navigationType==UIWebViewNavigationTypeOther:shouldStartLoadWithRequest:navigationType:。是:要捕获Javascript诱导的页面加载,您应该在webView中检查navigationType==UIWebViewNavigationTypeOther:shouldStartLoadWithRequest:navigationType:。UIWebViewNavigationTypeOther的navigationType还将包括分析等后台页面加载,我认为您不希望从外部加载 要仅检测页面导航,需要将[request URL]与[request mainDocumentURL]进行比较: UIWebViewNavigationTypeOther的navigationType还将包括后台页面加载,如分析,我认为您不希望从外部加载 要仅检测页面导航,需要将[request URL]与[request mainDocumentURL]进行比较:
我试过了,但它捕捉到了我第一次从字符串加载视图。也许有某种方法可以检测视图何时首次加载并重定向所有后续加载?当您将HTML字符串加载到WebView中时,webView:shouldStartLoadWithRequest:navigationType:中请求的URL为nil或“about:blank”-您应该能够捕获这些URL以区分初始加载和后续加载。我尝试了这一点,但它捕获了我第一次从字符串加载视图时的URL。也许有某种方法可以检测视图何时首次加载并重定向所有后续加载?当您将HTML字符串加载到WebView中时,WebView:shouldStartLoadWithRequest:navigationType:中的请求URL为nil或“about:blank”-您应该能够捕捉到这些信息以区分初始加载和后续加载。
- (BOOL)webView:(UIWebView *)view shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)type
{
if ([[request URL] isEqual:[request mainDocumentURL]])
{
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
else
{
return YES;
}
}