Objective-c - WebView ne peut pas répondre à la fenêtre modale lors du chargement du HTML
天蓬老师
天蓬老师 2017-05-02 09:23:47
0
2
798

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];
    
}
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(2)
给我你的怀抱

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

.
黄舟

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];
    }

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal