Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UIWebView检测javascript何时加载新页面_Javascript_Objective C_Uiwebview - Fatal编程技术网

UIWebView检测javascript何时加载新页面

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

我有一个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函数何时打开网页吗

我假设在最坏的情况下,我可以使用布尔值来确定这是否是第一次加载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;
    }
}