cocoa – 禁用WebKit WebView

cocoa – 禁用WebKit WebView,第1张

概述除了滚动之外,是否可以禁用与WebView的所有用户交互?我希望用户能够看到页面(并可能选择内容),但不能单击链接/右键单击/刷新/焦点表单字段/触发UI DOM事件(onclick等). 我在this question上看到我可以禁用右键单击和选择,但这对表单元素和导航发送DOM事件没有帮助. 您可以继承NSWindow并将您的子类设置为WebView的窗口.然后,您可以通过检测鼠标事件影响的控 除了滚动之外,是否可以禁用与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全部内容,希望文章能够帮你解决cocoa – 禁用WebKit WebView所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1032788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存