gpt4 book ai didi

cocoa - 禁用 WebKit WebView

转载 作者:行者123 更新时间:2023-12-03 16:10:59 26 4
gpt4 key购买 nike

除了滚动之外,是否可以禁用与 WebView 的所有用户交互?我希望用户能够看到页面(并可能选择内容),但不能单击链接/右键单击/刷新/焦点表单字段/触发 UI DOM 事件(onclick 等)。

我在 this question 上看到我可以禁用右键单击和选择,但这对表单元素和导航发送 DOM 事件没有帮助。

最佳答案

您可以子类化 NSWindow 并将您的子类设置为 WebView 的窗口。然后,您可以通过检测哪种类型的控件受到鼠标事件的影响来控制将哪些事件发送到 WebView。

这是相当暴力的,但会完全禁用任何鼠标事件,包括翻转等:

@interface WebViewEventKillingWindow : NSWindow 
{
IBOutlet WebView* myWebView;
}
@end

@implementation WebViewEventKillingWindow
- (void)sendEvent:(NSEvent*)event
{
NSView* hitView;
switch([event type])
{
case NSScrollWheel:
case NSLeftMouseDown:
case NSLeftMouseUp:
case NSLeftMouseDragged:
case NSMouseMoved:
case NSRightMouseDown:
case NSRightMouseUp:
case NSRightMouseDragged:
hitView = [myWebView hitTest:[event locationInWindow]];
if([hitView isDescendantOf:myWebView] &&
!([hitView isKindOfClass:[NSScroller class]] ||
[hitView isKindOfClass:[NSScrollView class]]))
{
return;
}
break;
default:
break;
}
[super sendEvent:event];
}
@end

关于cocoa - 禁用 WebKit WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1878281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com