recherche

Maison  >  Questions et réponses  >  le corps du texte

Objective-c - WebView ne peut pas répondre à la fenêtre modale lors du chargement du HTML

RT, dans WebView sous OSX (pas iOS), lors du chargement d'une page web html, le js window.showModalDialog n'est pas valide et la fenêtre ne peut pas apparaître. Lors du chargement de la même page web dans Safari, il y a une réponse. quelqu'un a fait quelque chose de similaire ?
Le code est le suivant :

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request{
    
    NSWindow *window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 400, 300) styleMask:NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask backing:NSBackingStoreBuffered defer:YES];
    [window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
    WebView *webView = [[WebView alloc] init];
    [webView setFrameLoadDelegate:self];
    window.contentView = webView;
    [webView.mainFrame loadRequest:request];
    [window makeKeyAndOrderFront:self];
    return webView;
    
}

- (WebView *)webView:(WebView *)sender createWebViewModalDialogWithRequest:(NSURLRequest *)request{
 
   return [self webView:sender createWebViewWithRequest:request];

}

- (void)webViewRunModal:(WebView *)sender{

   [sender.window makeKeyAndOrderFront:self];
    
}

- (void)webViewShow:(WebView *)sender{
    
    [sender.window makeKeyAndOrderFront:self];
    
}

- (void)webViewClose:(WebView *)sender{

    [sender.window close];
    
}
天蓬老师天蓬老师2792 Il y a quelques jours740

répondre à tous(2)je répondrai

  • 给我你的怀抱

    给我你的怀抱2017-05-02 09:25:47

    Il vaut mieux ne pas utiliser showModalDialog. Il est préférable de le changer en p. Je n'ai jamais utilisé la vue Web osx, mais lorsque je faisais du développement Android dans le passé, la vue Web ne prenait pas en charge la fenêtre contextuelle du. fenêtre modale. Je viens de le changer en p. Je ne sais pas. Est-ce la raison pour laquelle la vue Web dans OSX ne s'affiche pas

    .

    répondre
    0
  • 黄舟

    黄舟2017-05-02 09:25:47

    Après un long débogage, je l'ai finalement résolu. Veuillez fournir le code pour donner une idée aux autres.

         #pragma -mark -WebView Delegate
        
            - (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request{
         NSUInteger windowStyleMask = NSClosableWindowMask|NSMiniaturizableWindowMask|NSTitledWindowMask;
         _webWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 400, 300) styleMask:windowStyleMask backing:NSBackingStoreNonretained defer:YES];
         [_webWindow setReleasedWhenClosed:NO];
         WebView* newWebView = [[WebView alloc] initWithFrame:[_webWindow  contentRectForFrameRect:_webWindow.frame]];
        [newWebView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
        [[newWebView mainFrame] loadRequest:request];
        [_webWindow setContentView:newWebView];
        [_webWindow center];
        [_webWindow makeKeyAndOrderFront:nil];
     
        return newWebView;
     
         }
    
    
          - (WebView *)webView:(WebView *)sender createWebViewModalDialogWithRequest:(NSURLRequest *)request{
     
        return [self webView:sender createWebViewWithRequest:request];
         }
    
    
        - (void)webViewRunModal:(WebView *)sender{
     
        [sender.window makeKeyAndOrderFront:self];
     
        }
    
        - (void)webViewShow:(WebView *)sender{
      
        [sender.window makeKeyAndOrderFront:self];
     
        }
    
        - (void)webViewClose:(WebView *)sender{
        [sender.window close];
        }
    
    

    répondre
    0
  • Annulerrépondre