簡體   English   中英

UIWebView檢測javascript何時加載新頁面

[英]UIWebView detect when javascript is loading a new page

我有一個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引發的頁面加載,您應該在webView: shouldStartLoadWithRequest:navigationType:檢查navigationType == UIWebViewNavigationTypeOther webView: shouldStartLoadWithRequest:navigationType:

一個navigationTypeUIWebViewNavigationTypeOther還將包括后台頁面加載,如分析,我想你希望外部加載。

要僅檢測頁面導航,您需要將[request URL][request mainDocumentURL]

- (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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM