PhoneGap обнаруживает определенный URL в iOS5 UIWebView - PullRequest
2 голосов
/ 14 января 2012

Я использую PhoneGap для проекта iOS, и все работает, за исключением того, что я хочу обнаружить щелчок по ссылке выхода из системы в нашем веб-приложении и перехватить ее с помощью локальной логики выхода из системы. Я могу обнаружить ссылку выхода из системы, но логика ниже ТАКЖЕ думает, что это страница выхода из системы, когда о: пустые выстрелы в UIWebView PhoneGap. Есть идеи, что я делаю не так?

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];
    // If we detect the logout.jsp we need to go back to the login form and reset the credentials
    if ([[url path] rangeOfString:@"logout.jsp"].location == NSNotFound) {
        if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) {
            return YES;
        }
        else {
            return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
        }
    }
    else {
        // have PhoneGap go back to index page
        NSString *urlAddress = [[NSBundle mainBundle] pathForResource:@"www/index" ofType:@"html"];

        NSURL *url = [NSURL fileURLWithPath:urlAddress];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
        [theWebView loadRequest:requestObj];
        return NO;
    }
}

EDIT:

Я не решил, почему это происходит, поэтому сейчас я добавил этот обходной путь в основное предложение else:

if ([[url path] rangeOfString:@"about:blank"].location != NSNotFound) {
    return YES;
}

Награда достанется тому, кто сможет выяснить, почему мне даже нужен этот обходной путь, когда начальный IF проверяет только строку logout.jsp в url и about: blank никогда не должен совпадать с этим, но в этом случае.

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Если URL-адрес запроса "about: blank", то [url path] возвращает nil.

Так [nil rangeOfString:@"logout.jsp"].location возвращает 0 и NSNotFound! = 0.

Вот почему предложение ([[url path] rangeOfString:@"about:blank"].location != NSNotFound) ИСТИНА.

0 голосов
/ 17 января 2012

Вы пытались поставить NSLog в каждом вызове shouldStartLoadWithRequest?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...