IOS APP 开发 swift 中 UIWebView 与 javascript 的交互
两个问题:1、JS中怎么调用swift开发的IOS程序的方法或类2、如何重载swift中的UIWebView的各种事件???俺找了好久没找到相关资料,亲们有知道的告诉我一...
两个问题:
1、JS 中怎么调用 swift 开发的 IOS 程序的方法或类
2、如何重载 swift 中的 UIWebView 的各种事件???
俺找了好久没找到相关资料,亲们有知道的告诉我一声呀,如果需要报酬的,加我Q 8663843,感激不尽!
就看在俺帮了那么多人的情况下,帮帮俺吧,刚学 swift 不久,不了解这东东。
以后俺会在其他领域帮助其他人的,比如 .net,jsp,andriod,php 啥的。。。感激不尽。 展开
1、JS 中怎么调用 swift 开发的 IOS 程序的方法或类
2、如何重载 swift 中的 UIWebView 的各种事件???
俺找了好久没找到相关资料,亲们有知道的告诉我一声呀,如果需要报酬的,加我Q 8663843,感激不尽!
就看在俺帮了那么多人的情况下,帮帮俺吧,刚学 swift 不久,不了解这东东。
以后俺会在其他领域帮助其他人的,比如 .net,jsp,andriod,php 啥的。。。感激不尽。 展开
展开全部
实现委托,重载就行
class ViewController:UIWebViewDelegate //这样就实现了委托,然后重载方法
func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
return true
}
func webViewDidStartLoad(webView: UIWebView!) {
}
func webViewDidFinishLoad(webView: UIWebView!) {
//执行 js放在这里
stringByEvaluatingJavaScriptFromString("alter('hello')")
}
追问
我自己找到了方法。用 WKWebView 就行了。
不过,WKWebView 中又没有了 stringByEvaluatingJavaScriptFromString ...真是蛋疼。
UIWebView 可以重载 webView ,通过 request.URL 来实现调用。但是不能返回值。。。
感谢。。。。
追答
WKWebView是 ios8才增加的,方式已经有变化了!
2015-12-13 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
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>
通信例子:
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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询