如何在WebView中通知我的Cocoa应用程序onClick事件?

nfm*_*nfm 4 cocoa objective-c webview

我正在WebView我的OSX应用程序中加载一个并希望在用户点击其中的元素时在我的应用程序中收到通知WebView.(WebView正在加载一个属于我的Web应用程序的网页.)

这可能吗?

我可以想出一种方法(调查在click事件中设置的javascript值),但我希望有一种更明智的方法!

b12*_*400 5

由于网页是您的Web应用程序,因此我假设您可以控制html.

使用WebScript.

这是一个小小的演示:

Objective-C的:

- (void)windowDidLoad{
    [[webView windowScriptObject] setValue:self forKey:@"objcConnector"];
    ....
}
+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector{
    if (aSelector == @selector(elementClicked:)) return NO;
    return YES;
}
-(void)elementClicked:(id)object{
    //object is the id of the element
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<button id="example" onClick="window.objcConnector.elementClicked_(this.id)">Click me</button>
Run Code Online (Sandbox Code Playgroud)