I think this should be quite simple, but I cannot make it work.
I want to detect mouse clicks on a WebView...
I\'ve subclassed WebView, here
WebUIDelegate comes into rescue.
Supposing that you have a WebView instance in your NSWindowController:
WebView *aWebView;
You can set your controller as UIDelegate, as follow:
[aWebView setUIDelegate:self];
implementing the following method within your controller, you will have a form of control over mouse click events:
- (void)webView:(WebView *)sender mouseDidMoveOverElement:
(NSDictionary *)elementInformation modifierFlags:(NSUInteger)
modifierFlags
{
if ([[NSApp currentEvent] type] == NSLeftMouseUp)
NSLog(@"mouseDown event occurred");
}
as a bonus, playing with the elementInformation dictionary you can get additional informations about the DOM element in which click event occurred.
The problem is that the message isn't being sent to the WebView. Instead it is being sent to the private WebHTMLView inside your WebView, which actually processes the mouse events.
http://trac.webkit.org/browser/trunk/Source/WebKit/mac/WebView/WebHTMLView.mm#L3555
You might just want to look into using javascript in your WebView to send the onmousedown events back to your objective-c class.
Maybe this helps:
[window setAcceptsMouseMovedEvents:YES];