热门栏目:  公务员继续教育  专业技术人员继续教育  工勤人员继续教育  路之遥博客

您的位置:首页>路之遥博客>安卓开发

OBJECT-C与JAVASCRIPT的交互

2015-12-14 22:36 浏览: 0 字体:〖

摘要: OBJECT-C与JAVASCRIPT的交互...

工程需要实现的是JS控制OBJC的方法。
这里使用开源的WebViewJavascriptBridge
 
JS控制OBJC
所有的方法调用都依赖于connectWebViewJavascriptBridge 如下:
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 + (data ? ':<br/>' + JSON.stringify(data) : '')
              if (log.children.length) { log.insertBefore(el, log.children[0]) }
              else { log.appendChild(el) }
              }
......
 
这里使用一个<A>标签的ONCLICK事件,如下:
var aCLearn = document.getElementById('aCLearn');
              aCLearn.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)
               })
          }
          
          
在OBJC中,首先为webview加载内容,注意一定要使用baseURL,如果使用Nil,则html无法获取样式
 [WebViewJavascriptBridge enableLogging];
 
 [self loadExamplePage:webViewLearnList_];
    
 其次构造bridge(注意在.h文件中引用) 
    _bridge = [WebViewJavascriptBridge bridgeForWebView:webViewLearnList_ handler:^(id data, WVJBResponseCallback responseCallback) {
        NSLog(@"Objc received message from JS:%@",data);
        TTAlertNoTitle(data);
        responseCallback(@"Response formesage from objc");  //response js
    }];
    
   
 
- (void)loadExamplePage:(UIWebView*)webView {
    NSString* htmlPath = [[NSBundle mainBundle] pathForResource:@"learn_list" ofType:@"html"];
    NSString* appHtml = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil];
    NSURL *baseURL = [NSURL fileURLWithPath:htmlPath];
    [webView loadHTMLString:appHtml baseURL:baseURL];
}
 
当点击HREF链接,则弹出原生提示框。
 
OBJECTC向JAVASCRIPT发送变量则较为则较为简单
[webViewLearnList_ stringByEvaluatingJavaScriptFromString:@"var curUserId=1000"];
然后在JS中引用即可
 

 

你可能也喜欢:

上一篇:安卓与HTML5的互相调用

下一篇:没有了

最近更新

路之遥继续教育网,扫描加好友

技术支持:常州路之遥软件有限公司 版权所有
备案号:苏ICP备09092440号