#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)
class ViewController: UIViewController, WKScriptMessageHandler
func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) {
if(message.name == "callbackHandler") {
println("JavaScript отправляет сообщение \(message.body)")
}
}
contentController.addScriptMessageHandler(self, name: "callbackHandler")
webkit.messageHandlers.callbackHandler.postMessage("JavaScript вызывает Swift");
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>веб-страница</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"></div>
```html
<script>
// JS calls the APP (callbackHandler must be consistent on both sides)
function callNativeApp() {
try {
webkit.messageHandlers.callbackHandler.postMessage("JavaScript вызывает Swift");
} catch (err) {
console.log('Native контекст ещё не существует');
}
}
var count = 0;
// APP calls JS
function redHeader(msg) {
count++;
document.querySelector('h3').style.color = "red";
document.getElementById('jsParamFuncSpan').innerHTML =
msg + ' <font color=red>Вы кликнули ' + count + ' раз</font>';
}
</script>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )