代码拉取完成,页面将自动刷新
#SwiftJavaScript
swift 和 Javascript的交互,javascript可以调用swift ,swift也可以调用javascript 通过WKWebView来实现,不使用UIWebView
let conf = WKWebViewConfiguration()
let userScript = WKUserScript(source: "redHeader()", injectionTime: .AtDocumentEnd, forMainFrameOnly: true)
conf.userContentController.addUserScript(userScript)
webView = WKWebView(frame: self.view.frame, configuration: conf)
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+' <font color=red >您点击了 '+cunt+' 次</font>';
}
</script>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型