# SwiftJavaScript **Repository Path**: huqs/SwiftJavaScript ## Basic Information - **Project Name**: SwiftJavaScript - **Description**: swift 和 Javascript的交互,javascript可以调用swift ,swift也可以调用javascript 通过WKWebView来实现,不使用UIWebView - **Primary Language**: Swift - **License**: Not specified - **Default Branch**: huqs - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2016-03-01 - **Last Updated**: 2022-10-20 ## Categories & Tags **Categories**: javascript-toolkits **Tags**: None ## README #SwiftJavaScript swift 和 Javascript的交互,javascript可以调用swift ,swift也可以调用javascript 通过WKWebView来实现,不使用UIWebView  ## Features - [x] JavaScript call Native App - [x] Native App call JavaScript ## Requirements - iOS 8.0+ / Mac OS X 10.9+ / tvOS 9.0+ / watchOS 2.0+ - Xcode 7.2+ ## Communication - 如果您需要帮助,请与我联系hu670014125@163.com ## Usage ### JavaScript call Native App ```swift let conf = WKWebViewConfiguration() let userScript = WKUserScript(source: "redHeader()", injectionTime: .AtDocumentEnd, forMainFrameOnly: true) conf.userContentController.addUserScript(userScript) webView = WKWebView(frame: self.view.frame, configuration: conf) ``` ### Native App call JavaScript 1.首先添加一个WKScriptMessageHandler代理 ```swift class ViewController: UIViewController, WKScriptMessageHandler ``` 2.实现«userContentController»的代理方法 ```swift func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) { if(message.name == "callbackHandler") { println("JavaScript is sending a message \(message.body)") } } ``` 3.WebView启动对JavaScript的监听事件 ```swift contentController.addScriptMessageHandler( self, name: "callbackHandler" ) ``` 4.web中,添加如下JavaScript ```swift webkit.messageHandlers.callbackHandler.postMessage("JavaScript 调用 Swift"); ``` 4.swift调用JavaScript ```swift self.webView.evaluateJavaScript("redHeader('来自Swift的调用')") { (sender:AnyObject?, error:NSError?) -> Void in print("sender:\(sender) error:\(error)") } redHeader是JavaScript中对应的方法,该方法需要传递一个字符串 ``` HTML源码 ```swift