2017-08-20 1 views
0

Ich habe WKWebView und ich möchte Rechtsklick-Menü deaktivieren/entfernen:WKWebView Rechtsklick-Menü deaktivieren

enter image description here

fand ich ähnliche Probleme:

webview load custom context menu

Cocoa webView - Disable all interaction

Aber ich kann

nicht finden
optional func webView(_ sender: WebView!, contextMenuItemsForElement element: [AnyHashable : Any]!, 
    defaultMenuItems: [Any]!) -> [Any]! 

method in WKUIDelegate oder WKNavigationDelegate

+0

außer Kraft setzen können Dies könnte helfen: https: // stackoverflow.com/questions/28801032/how-can-the-context-menu-in-wkwebview-on-the-mac-be-modified-or-overridden#28981319 – defense2000x

+0

Mögliche Duplikat von [Wie kann das Kontextmenü in WKWebView auf der Mac ist m odifiziert oder außer Kraft gesetzt?] (https://stackoverflow.com/questions/28801032/how-can-the-context-menu-in-wkwebview-on-the-mac-be-modified-or-overdridden) – the4kman

Antwort

0

ich es herausfinden als eleganteste Weg:

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation 
{ 
    [webView evaluateJavaScript:@"document.getElementsByTagName('body')[0].setAttribute('oncontextmenu', 'event.preventDefault();');" completionHandler:nil]; 
} 

Beachten Sie, dass einige JavaScripts dieses Verhalten

1

Sie dies tun können, aber nicht von Swift/ObjC Seite.

Intercept des 'oncontextmenu' Ereignis auf Ihrem HTML-Code, zum Beispiel:

<body oncontextmenu='contextMenu(event)'> 

Dann von javascript:

function contextMenu(evt) 
{ 
    evt.preventDefault(); 
} 

I abgeleitet dies aus der folgenden Post, die erklärt, wie man dieses Menü anpassen :

How can the context menu in WKWebView on the Mac be modified or overridden?

Grüße

0
myWKView.allowsBackForwardNavigationGestures = false