WkWebKit - javascript sur la page chargée trouve fenêtre.webkit est pas défini

Je suis en train d'expérimenter avec WkWebKit de parler de retour et vient entre l'application et la page. Je peux obtenir de javaScript pour exécuter amende à l'aide WkWebView evaluateJavascript méthode, mais lorsque j'essaie d'exécuter la fenêtre.webkit.messageHandlers.myHandler.postMessage('hello world!') sur le JavaScript de la page, je trouve que la fenêtre.webkit n'est pas défini.

Bizarre... je suis en cours d'exécution dans un simulateur de l'iPad avec ios 8.4. Je pensais que c'était disponible dans la version originale 8, non?

Je ne peux pas trouver quelqu'un d'autre poster sur ce, peut-être que j'ai fait quelque chose de mal?

J'ai même joint mon Safari Développeur sur le simulateur du navigateur, et dans la console j'essaie de voir ce que la fenêtre.webkit est, et bien sûr, il n'existe pas.

Remarque que j'ajoute un premier script à exécuter lorsque le chargement de la page (je vois cela dans l'éditeur de javascript - le message est enregistré). Et j'ajoute un script gestionnaire de message...

[EDIT: Ajout de code plus de détails ici]
Voici mon code:

- (void)viewDidLoad {
  [super viewDidLoad];
  //Do any additional setup after loading the view, typically from a nib.
  NSLog(@"main view Controller viewDidLoad called...");

//if we are running on an OLD ios (pre v8) WKWebView will not exist.  So don't create it if it doesn't exist...
if (NSClassFromString(@"WKWebView")) {
    //WKWebView cannot be dragged onto storyboard, so have to create it manually here.
    //We have a "ContainerView" called _webContainer that this browser view will live inside
    //First we create a web view configuration object...
    WKWebViewConfiguration *wbConfig = [WKWebViewConfiguration alloc];
    wbConfig.mediaPlaybackAllowsAirPlay = true;
    wbConfig.mediaPlaybackRequiresUserAction = false; 
    //inject some Javascript into our page before it even loads...
    NSString *scriptSource = @"console.log('Hi from the iOS app hosting this page...'); window.hostedByWkWebView=true;";
    WKUserScript *userScript = [[WKUserScript alloc]
                                initWithSource:scriptSource
                                injectionTime:WKUserScriptInjectionTimeAtDocumentStart
                                forMainFrameOnly:YES];

    [wbConfig.userContentController addUserScript:userScript];
    [wbConfig.userContentController addScriptMessageHandler:self name:@"myHandler"]; //javascript to use this would be: window.webkit.messageHandlers.myHandler.postMessage


    //Ok, the config is created, now create the WkWebView instance, passing in this config...
    _webView = [[WKWebView alloc] initWithFrame: [_webContainer bounds] configuration:wbConfig];
    _webView.autoresizesSubviews = true;
    _webView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
    _webView.navigationDelegate = self;

    //Add the web view to the container view, and tell the container to automatically resize its subviews, height and width.
    [_webContainer addSubview:_webView];
    _webContainer.autoresizesSubviews = true;
    _webContainer.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

    //Set the URL for the webview and navigate there...
    NSString *fullURL = @"https://myurlgoeshere.com";

    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [_webView loadRequest:requestObj];
}
else {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Cannot create Web View" message:@"The web view used requires iOS 8 or higher.  Sorry." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"", nil];
    [alert show];
}

//...

OriginalL'auteur Brian B | 2015-09-24