3 Star 9 Fork 0

胡秋生 / SwiftJavaScript

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

#SwiftJavaScript

swift 和 Javascript的交互,javascript可以调用swift ,swift也可以调用javascript 通过WKWebView来实现,不使用UIWebView

效果

Features

  • JavaScript call Native App
  • Native App call JavaScript

Requirements

  • iOS 8.0+ / Mac OS X 10.9+ / tvOS 9.0+ / watchOS 2.0+
  • Xcode 7.2+

Communication

Usage

JavaScript call Native App

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代理

class ViewController: UIViewController, WKScriptMessageHandler

2.实现«userContentController»的代理方法

func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) {
    if(message.name == "callbackHandler") {
        println("JavaScript is sending a message \(message.body)")
    }
}

3.WebView启动对JavaScript的监听事件

contentController.addScriptMessageHandler(
    self,
    name: "callbackHandler" 
)

4.web中,添加如下JavaScript

webkit.messageHandlers.callbackHandler.postMessage("JavaScript 调用 Swift");

4.swift调用JavaScript

self.webView.evaluateJavaScript("redHeader('来自Swift的调用')") { (sender:AnyObject?, error:NSError?) -> Void in
print("sender:\(sender)   error:\(error)")
}
redHeader是JavaScript中对应的方法该方法需要传递一个字符串

HTML源码

<html>
<head>
<meta charset="UTF-8">
<title>web页面</title>
</head>
<body>


<style type='text/css'>
body{font-size:60px}</style>

<h3 align="center">标题1(APP调用JS使标题变成红色)</h3>

<br>
<button style="text-align:center;height:100px;width:300px;font-size:40px;" onclick="callNativeApp()">调用APP</button>

<br><br><br>
<div id="jsParamFuncSpan"></dvi>
</body>

<script>
// JS调用APP(callbackHandler:要两边一致)
function callNativeApp () {
try {

webkit.messageHandlers.callbackHandler.postMessage("JavaScript 调用 Swift");

} catch(err) {

console.log('The native context does not exist yet');
}
}

var cunt=0;

// APP调用JS
function redHeader(msg) {
cunt++;

document.querySelector('h3').style.color = "red";
document.getElementById('jsParamFuncSpan').innerHTML
= msg+'&nbsp;&nbsp;&nbsp;<font color=red >您点击了&nbsp;&nbsp;'+cunt+'&nbsp;&nbsp;</font>';

}
</script>

空文件

简介

swift 和 Javascript的交互,javascript可以调用swift ,swift也可以调用javascript 通过WKWebView来实现,不使用UIWebView 展开 收起
Swift
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Swift
1
https://gitee.com/huqs/SwiftJavaScript.git
git@gitee.com:huqs/SwiftJavaScript.git
huqs
SwiftJavaScript
SwiftJavaScript
huqs

搜索帮助