參考 [iOS] 使用WebViewJavascriptBridge實(shí)現(xiàn)OC與JS交互
詳細(xì)的就不說(shuō)了看上面的文章就可以,只是做了簡(jiǎn)單修改挚歧,實(shí)現(xiàn)跟上面一樣處理檬果。
修改后的地址:demo地址?
示例:
JS調(diào)用OC?
JS代碼(這里是找到id為buttons的div 然后創(chuàng)建一個(gè)按鈕泽篮,點(diǎn)擊按鈕之后調(diào)用OC代碼 )
var callbackButton = document.getElementById('buttons').appendChild(document.createElement('button'))
callbackButton.innerHTML = '登陸'
callbackButton.onclick = function(e) {
e.preventDefault()
log('點(diǎn)擊了JS的按鈕')
bridge.callHandler('loginFunc', {'typeId': '100001'}, function(response) {
callbackButton.innerHTML ='登陸成功'
log('JS got response', response)
})
}
OC中實(shí)現(xiàn)代碼
// 注冊(cè)個(gè)登陸的事件
[_bridge registerHandler:@"loginFunc" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"js登陸傳遞過(guò)來(lái)的數(shù)據(jù):%@",data);
// 調(diào)用登陸方法
NSString *success=? [self logIn:data[@"typeId"]];
/// 登陸成功之后傳遞給JS的參數(shù)
responseCallback(success);
}];
OC調(diào)用JS
OC創(chuàng)建一個(gè)注冊(cè)按鈕普气,點(diǎn)擊之后調(diào)用JS
// OC中一個(gè)注冊(cè)按鈕
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(150, 70, 80, 30)];
btn.backgroundColor = [UIColor lightGrayColor];
[btn setTitle:@"注冊(cè)" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClickReg:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
// 點(diǎn)擊注冊(cè)按鈕
-(void)btnClickReg:(UIButton *)sender
{
// registerFunc 跟JS協(xié)商的名字? data傳遞給JS的參數(shù)? responseCallback JS收到之后回調(diào)返回的數(shù)據(jù)
[_bridge callHandler:@"registerFunc" data:@{ @"mobile":@"10086"} responseCallback:^(id responseData) {
NSLog(@"%@",responseData[@"success"]);
}];
JS中的邏輯
bridge.registerHandler('registerFunc', function(data, responseCallback) {
log('注冊(cè)收到OC的數(shù)據(jù):', data)
var responseData = { 'success':'你已經(jīng)注冊(cè)成了' }
log('JS打印數(shù)據(jù)', responseData)
responseCallback(responseData)
})
好了谜疤,至此結(jié)束,不懂的看上面的demo就可以了现诀。