You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by GitBox <gi...@apache.org> on 2018/11/02 14:10:40 UTC

[GitHub] jonathanli2 opened a new issue #340: iOS CDVWKInAppBrowser evaluateJavascript method randomly gets blocked on iOS 12

jonathanli2 opened a new issue #340: iOS CDVWKInAppBrowser evaluateJavascript method randomly gets blocked on iOS 12
URL: https://github.com/apache/cordova-plugin-inappbrowser/issues/340
 
 
   Hi, 
   While testing the new ios inappbrowser plugin with wkwebview on iOS 12 device, when the javascript code calls injectScriptCode method, the application may hang. 
   The reason is in CDVWKInAppBrowser.m, the completing block of evaluateJavascrip method is not called,  so the method stuck in the _**while (!finished)**_ loop
   
   _- (NSString *)evaluateJavaScript:(NSString *)script {
       __block NSString *resultString = nil;
       __block BOOL finished = NO;
       __block NSString* _script = script;
       NSLog(@"evaluateJavaScript: %@", script);
       [self.inAppBrowserViewController.webView evaluateJavaScript:script completionHandler:^(id result, NSError *error) {
           NSLog(@"evaluatejavascript result: %@, %@", result, error);
           if (error == nil) {
               if (result != nil) {
                   resultString = result;
                   NSLog(@"%@", resultString);
               }
           } else {
               NSLog(@"evaluateJavaScript error : %@ : %@", error.localizedDescription, _script);
           }
           finished = YES;
       }];
       
       while (!finished)
       {
           NSLog(@"CDVWKInAppbrowser evaluateJavaScript runloop");
           [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
       }
       NSLog(@"evaluateJavaScript: %@", resultString);
       return resultString;
   }_
   
   The xcode console log has the below output, which shows it calls runloop few times and then just stops after calling evaluatejavascript method.
   
   2018-11-02 09:44:32.646767-0400 wk[5669:2032638] evaluateJavaScript: (function(w){if(!w._cdvMessageHandler) {w._cdvMessageHandler = function(id,d){w.webkit.messageHandlers.cordova_iab.postMessage({d:d, id:id});}}})(window)
   2018-11-02 09:44:39.013119-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.013583-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.013827-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.014057-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.014336-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.014561-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.014789-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.015012-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.015234-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.015455-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.015676-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.015898-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.016120-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.016400-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.016622-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.016848-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.017239-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.021299-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.037837-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:44:39.054533-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   2018-11-02 09:45:47.383791-0400 wk[5669:2032638] CDVWKInAppbrowser evaluateJavaScript runloop
   
   I saw someone else also reported the same issue on ios 12 device testing at
   [https://stackoverflow.com/questions/26778955/wkwebview-evaluate-javascript-return-value](https://stackoverflow.com/questions/26778955/wkwebview-evaluate-javascript-return-value)
   (see the first answer), so this may relate to the iOS 12 behavior change.
   
   Thanks for help.
   
   Jonathan
   
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org