IOS APP 开发 swift 中 UIWebView 与 javascript 的交互
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS APP 开发 swift 中 UIWebView 与 javascript 的交互相关的知识,希望对你有一定的参考价值。
两个问题:
1、JS 中怎么调用 swift 开发的 ios 程序的方法或类
2、如何重载 swift 中的 UIWebView 的各种事件???
俺找了好久没找到相关资料,亲们有知道的告诉我一声呀,如果需要报酬的,加我Q 8663843,感激不尽!
就看在俺帮了那么多人的情况下,帮帮俺吧,刚学 swift 不久,不了解这东东。
以后俺会在其他领域帮助其他人的,比如 .net,jsp,andriod,php 啥的。。。感激不尽。
实现委托,重载就行
class ViewController:UIWebViewDelegate //这样就实现了委托,然后重载方法
return true
func webViewDidStartLoad(webView: UIWebView!)
func webViewDidFinishLoad(webView: UIWebView!)
//执行 js放在这里
stringByEvaluatingjavascriptFromString("alter('hello')")
追问
我自己找到了方法。用 WKWebView 就行了。
不过,WKWebView 中又没有了 stringByEvaluatingJavaScriptFromString ...真是蛋疼。
UIWebView 可以重载 webView ,通过 request.URL 来实现调用。但是不能返回值。。。
感谢。。。。
WKWebView是 ios8才增加的,方式已经有变化了!
参考技术A swift中的UIWebView可以通过WebviewJavaScriptBridge和OVGap跟js交互,这两个库都是让webview与JS建立起一条桥梁,这样就可以相互通信了。通信例子:
function connectWebViewJavascriptBridge(callback)
if (window.WebViewJavascriptBridge)
callback(WebViewJavascriptBridge)
else
document.addEventListener('WebViewJavascriptBridgeReady', function()
callback(WebViewJavascriptBridge)
, false)
connectWebViewJavascriptBridge(function(bridge)
var uniqueId = 1
function log(message, data)
var log = document.getElementById('log')
var el = document.createElement('div')
el.className = 'logLine'
el.innerhtml = uniqueId++ + '. ' + message + ':<br/>' + JSON.stringify(data)
if (log.children.length) log.insertBefore(el, log.children[0])
else log.appendChild(el)
bridge.init(function(message, responseCallback)
log('JS got a message', message)
var data = 'Javascript Responds':'Wee!'
log('JS responding with', data)
responseCallback(data)
)
bridge.registerHandler('testJavascriptHandler', function(data, responseCallback)
log('ObjC called testJavascriptHandler with', data)
var responseData = 'Javascript Says':'Right back atcha!'
log('JS responding with', responseData)
responseCallback(responseData)
)
var button = document.getElementById('buttons').appendChild(document.createElement('button'))
button.innerHTML = 'Send message to ObjC'
button.onclick = function(e)
e.preventDefault()
var data = 'Hello from JS button'
log('JS sending message', data)
bridge.send(data, function(responseData)
log('JS got response', responseData)
)
document.body.appendChild(document.createElement('br'))
var callbackButton = document.getElementById('buttons').appendChild(document.createElement('button'))
callbackButton.innerHTML = 'Fire testObjcCallback'
callbackButton.onclick = function(e)
e.preventDefault()
log('JS calling handler "testObjcCallback"')
bridge.callHandler('testObjcCallback', 'foo': 'bar', function(response)
log('JS got response', response)
)
)
</script>
以上是关于IOS APP 开发 swift 中 UIWebView 与 javascript 的交互的主要内容,如果未能解决你的问题,请参考以下文章