最近在寫一些關於wkwebview的一些代碼,發現了幾點心得,記錄一下。
1.js調用OC
我是利用wkwebview進行的開發實現,主要代碼有三部分
1.向config注入OC對象
[config.userContentController addScriptMessageHandler:self name:@"YHModel" ];
2.js中書寫調用方法:
window.webkit.messageHandlers.YHModel.postMessage({
height: $("html").height()
});
3.完成OC回調方法
//js > OC
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{
if ([message.name isEqualToString:@"YHModel"]) {
CGFloat height = [[message.body valueForKey:@"height"] floatValue];
}
}
2.OC調用js
同樣是利用wkwebview中的代碼,實現起來分為兩部分:
1.OC中代碼
[webView evaluateJavaScript:@"compeleteFlag=true" completionHandler:nil];
2.js中代碼
var compeleteFlag = false;
var timeintervalFunction = setInterval(function() {
var widthValue = $("#progross").width();
$("#progross").width(widthValue + space);
if(widthValue >= $("#progrossPart").width() || compeleteFlag) {
$("#progross").width($("#progrossPart").width());
clearInterval(timeintervalFunction);
$("#progrossPart").fadeOut();
}
}, 1000);
應當注意的是:
1.js回調OC時,應判斷所獲取的值是不是真實存在。
2.OC調用js代碼時應該保證,js代碼處於全局位置或者能夠確定代碼所處位置,正確認識其層級關系。
友情鏈接:
技術博客 簡書主頁