コード ```WKWebViewに表示されたJavascriptのアラートなどを表示するものですが iOS版を参考にMacOSX版に書き換えたいと思ってググてみても、なかなか参考になるページが見つかりません みなさんに頼ってばかりで恐縮なのですが教えてください ```Swift3 import Cocoa import Foundation import WebKit class ViewController: NSViewController , WKNavigationDelegate , WKUIDelegate { @IBOutlet var myWeb: WKWebView! override func viewDidLoad() { super.viewDidLoad() myWeb.uiDelegate = self let url = NSURL(string: "http://www.tagindex.com/javascript/window/alert1.html") let req = NSURLRequest(url:url! as URL) myWeb.load(req as URLRequest!) } func webView(_ myWeb: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) { print("display alert dialog") let alert = NSAlert() alert.messageText = message alert.addButton(withTitle: "OK") let res = alert.runModal() if res == NSAlertFirstButtonReturn { print("pushed") } } func webView(_ myWeb: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) { print("display confirm dialog") } func webView(_ myWeb: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (String?) -> Void) { print("display prompt dialog") } override var representedObject: Any? { didSet { // Update the view, if already loaded. } } }
こうしてみたんですけど、アラートを出してOKを押すとCrashします。
どうやったらJavascriptに結果を渡せるのか分かりません。ググるとiOS版はたくさん情報があるのですがMacOSX版は全然見つかりません
アラートに関しては下記のようにcompletionHandler()を追加することで、うまく動作するようになりました
Swift3
1 let alert = NSAlert() 2 alert.messageText = message 3 alert.addButton(withTitle: "OK") 4 let res = alert.runModal() 5 completionHandler()
後は、ダイアログの作成です
ダイアログもできました
Swift3
1 let alert = NSAlert() 2 alert.messageText = message 3 alert.addButton(withTitle: "OK") 4 alert.addButton(withTitle: "Cansel") 5 let res = alert.runModal() 6 if res == NSAlertFirstButtonReturn { 7 completionHandler(true) 8 }else{ 9 completionHandler(false) 10 }
後はインプットパネルです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。