From 2dd804d50aacbf5f5f0a2e3c14cc1ffd8cdb760f Mon Sep 17 00:00:00 2001 From: wangxinhua Date: Thu, 10 Aug 2017 14:30:46 +0800 Subject: [PATCH 1/4] fix issue--- if the only difference is hash value between two urls, we should not treat them as redirection --- NJKWebViewProgress/NJKWebViewProgress.m | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/NJKWebViewProgress/NJKWebViewProgress.m b/NJKWebViewProgress/NJKWebViewProgress.m index 4b9baa6..576463b 100644 --- a/NJKWebViewProgress/NJKWebViewProgress.m +++ b/NJKWebViewProgress/NJKWebViewProgress.m @@ -161,13 +161,22 @@ - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error [webView stringByEvaluatingJavaScriptFromString:waitForCompleteJS]; } - BOOL isNotRedirect = _currentURL && [_currentURL isEqual:webView.request.mainDocumentURL]; + BOOL isNotRedirect = [[self nonFragmentURL:_currentURL] isEqual:[self nonFragmentURL: webView.request.mainDocumentURL]]; BOOL complete = [readyState isEqualToString:@"complete"]; if ((complete && isNotRedirect) || error) { [self completeProgress]; } } +- (NSURL *)nonFragmentURL:(NSURL *)sourceUrl{ + NSURL *nonFragmentUrl = sourceUrl; + if(sourceUrl && sourceUrl.fragment){ + NSString *nonFragmentUrlStr = [sourceUrl.absoluteString stringByReplacingOccurrencesOfString:[@"#" stringByAppendingString:sourceUrl.fragment] withString:@""]; + nonFragmentUrl = [NSURL URLWithString:nonFragmentUrlStr]; + } + return nonFragmentUrl; +} + #pragma mark - #pragma mark Method Forwarding // for future UIWebViewDelegate impl From 7e4d6fc418755e6243ac81408804e1fb6cb50c22 Mon Sep 17 00:00:00 2001 From: wangxinhua Date: Thu, 10 Aug 2017 19:14:28 +0800 Subject: [PATCH 2/4] add fix in add fix in finish and shouldStart's method' --- NJKWebViewProgress/NJKWebViewProgress.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/NJKWebViewProgress/NJKWebViewProgress.m b/NJKWebViewProgress/NJKWebViewProgress.m index 576463b..056c76f 100644 --- a/NJKWebViewProgress/NJKWebViewProgress.m +++ b/NJKWebViewProgress/NJKWebViewProgress.m @@ -92,8 +92,7 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *) BOOL isFragmentJump = NO; if (request.URL.fragment) { - NSString *nonFragmentURL = [request.URL.absoluteString stringByReplacingOccurrencesOfString:[@"#" stringByAppendingString:request.URL.fragment] withString:@""]; - isFragmentJump = [nonFragmentURL isEqualToString:webView.request.URL.absoluteString]; + isFragmentJump = [[self nonFragmentURL:request.URL] isEqual:[self nonFragmentURL: webView.request.mainDocumentURL]]; } BOOL isTopLevelNavigation = [request.mainDocumentURL isEqual:request.URL]; @@ -136,7 +135,7 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView [webView stringByEvaluatingJavaScriptFromString:waitForCompleteJS]; } - BOOL isNotRedirect = _currentURL && [_currentURL isEqual:webView.request.mainDocumentURL]; + BOOL isNotRedirect = [[self nonFragmentURL:_currentURL] isEqual:[self nonFragmentURL: webView.request.mainDocumentURL]]; BOOL complete = [readyState isEqualToString:@"complete"]; if (complete && isNotRedirect) { [self completeProgress]; From 98aff52d795b994461b03366292e3aadc8f629bd Mon Sep 17 00:00:00 2001 From: wangxinhua Date: Thu, 10 Aug 2017 19:14:55 +0800 Subject: [PATCH 3/4] Revert "add fix in add fix in finish and shouldStart's method'" This reverts commit 7e4d6fc418755e6243ac81408804e1fb6cb50c22. --- NJKWebViewProgress/NJKWebViewProgress.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/NJKWebViewProgress/NJKWebViewProgress.m b/NJKWebViewProgress/NJKWebViewProgress.m index 056c76f..576463b 100644 --- a/NJKWebViewProgress/NJKWebViewProgress.m +++ b/NJKWebViewProgress/NJKWebViewProgress.m @@ -92,7 +92,8 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *) BOOL isFragmentJump = NO; if (request.URL.fragment) { - isFragmentJump = [[self nonFragmentURL:request.URL] isEqual:[self nonFragmentURL: webView.request.mainDocumentURL]]; + NSString *nonFragmentURL = [request.URL.absoluteString stringByReplacingOccurrencesOfString:[@"#" stringByAppendingString:request.URL.fragment] withString:@""]; + isFragmentJump = [nonFragmentURL isEqualToString:webView.request.URL.absoluteString]; } BOOL isTopLevelNavigation = [request.mainDocumentURL isEqual:request.URL]; @@ -135,7 +136,7 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView [webView stringByEvaluatingJavaScriptFromString:waitForCompleteJS]; } - BOOL isNotRedirect = [[self nonFragmentURL:_currentURL] isEqual:[self nonFragmentURL: webView.request.mainDocumentURL]]; + BOOL isNotRedirect = _currentURL && [_currentURL isEqual:webView.request.mainDocumentURL]; BOOL complete = [readyState isEqualToString:@"complete"]; if (complete && isNotRedirect) { [self completeProgress]; From b32ddf0bc7e3c7d0a01865488431601a850d213a Mon Sep 17 00:00:00 2001 From: wangxinhua Date: Thu, 10 Aug 2017 19:18:43 +0800 Subject: [PATCH 4/4] add fix in shouldStartLoadWithRequest: and didFailLoadWithError:'s method --- NJKWebViewProgress/NJKWebViewProgress.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/NJKWebViewProgress/NJKWebViewProgress.m b/NJKWebViewProgress/NJKWebViewProgress.m index 576463b..7937d31 100644 --- a/NJKWebViewProgress/NJKWebViewProgress.m +++ b/NJKWebViewProgress/NJKWebViewProgress.m @@ -92,8 +92,7 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *) BOOL isFragmentJump = NO; if (request.URL.fragment) { - NSString *nonFragmentURL = [request.URL.absoluteString stringByReplacingOccurrencesOfString:[@"#" stringByAppendingString:request.URL.fragment] withString:@""]; - isFragmentJump = [nonFragmentURL isEqualToString:webView.request.URL.absoluteString]; + isFragmentJump = [[self nonFragmentURL:request.URL] isEqual:[self nonFragmentURL:webView.request.URL]]; } BOOL isTopLevelNavigation = [request.mainDocumentURL isEqual:request.URL]; @@ -136,7 +135,7 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView [webView stringByEvaluatingJavaScriptFromString:waitForCompleteJS]; } - BOOL isNotRedirect = _currentURL && [_currentURL isEqual:webView.request.mainDocumentURL]; + BOOL isNotRedirect = [[self nonFragmentURL:_currentURL] isEqual:[self nonFragmentURL: webView.request.mainDocumentURL]]; BOOL complete = [readyState isEqualToString:@"complete"]; if (complete && isNotRedirect) { [self completeProgress];