WKWebView禁用右键菜单

时间:2017-08-20 12:07:40

标签: macos cocoa wkwebview

我有WKWebView,我想禁用/删除右键菜单:

enter image description here

我发现了类似的问题:

webview load custom context menu

Cocoa webView - Disable all interaction

但我找不到

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

中的

method

3 个答案:

答案 0 :(得分:1)

你可以这样做,但不能从Swift / Objc那边做。

拦截' oncontextmenu'您的HTML代码上的事件,例如:

#include <IE.au3>
Local $oIE = _IECreate("https://google.com")
Local $oButtons = _IETagNameGetCollection($oIE, "button")
For $oButton In $oButtons
    Consolewrite("name: " & $oButton.name & " value: " & $oButton.value & @CRLF)
Next

然后从javascript:

<body oncontextmenu='contextMenu(event)'>

我从以下文章中推断出这一点,解释了如何自定义此菜单:

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

此致

答案 1 :(得分:1)

我认为这是一种最优雅的方式:

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

请记住,某些JavaScripts可以覆盖此行为

答案 2 :(得分:0)

myWKView.allowsBackForwardNavigationGestures = false