あなたが探しているのは、参照ドキュメント「Calling Objective-C Methods From Javascript」(参照)です。
基本的に要約すると、Objective-C クラスを JavaScript スクリプト環境に明示的に公開する必要があります。非公式プロトコルは、これWebScripting
を行うためにカスタム オブジェクトを公開するために実装するプロトコルです。
公開したいオブジェクト (「通知オブジェクト」など) が javascript に実装され+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector;
たら+ (BOOL)isKeyExcludedFromWebScript:(const char *)name;
、webview のコントローラー/デリゲートは、オブジェクトを javascript で使用できるようにする必要があります。
たとえば、webView インスタンスのFrame Load Delegateで:
- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame {
// Create the Obj-C object you want JS to be able to access
CustomNotificationCenter *noteCenter = [CustomNotificationCenter sharedNotificationCenter];
// Get the script object that corresponds to "window" in JS
id win = [sender windowScriptObject];
// Add our noteCenter as a property of "window" called "customNotifications"
[win setValue:noteCenter forKey:@"customNotifications"];
}
そして、すべてを正しく行っていれば、Objective-C オブジェクトを Javascript で使用できるはずです。たとえば、「printNotification:」という名前のメソッドを に公開した場合noteCenter
、Javascript では次のように動作します。
function messageReceived(messageText) {
window.customNotifications.printNotification_("Notification!" + messageText);
}
そしてもちろん、Growl を使用してカスタム Obj-C オブジェクトと の実装で通知を表示しますprintNotification
。(Mountain Lion を使用している場合は、新しい通知センターも素晴らしいものです)。それが役立つことを願っています。