iOS与HTML的交互

iOS项目导入HTML文件

HTML文件导入到项目时不要通过“右键-Add Files to ...”的方式,这样导入的HTML文件会直接放到项目的bundle下,HTML文件原先的目录结构会被删除,导致链接到HTML文件里面的css和js文件路径错误。正确的方式时直接将文件拖到Xcode工程中,选择"Create folder refrences"选项,这样文件的目录结构才能完整的导入。导入的HTML文件是以蓝色文件夹的状态存在的。

iOS加载HTML文件
    //设置webView
    _webView.scalesPageToFit = YES;
    _webView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    _webView.scrollView.bounces = NO;
    
    //查找HTML路径
    NSString *path = [[NSBundle mainBundle] pathForResource:@"SelectReader" ofType:@".html" inDirectory:@"html/html"];
    NSURL *url = [NSURL fileURLWithPath:path];
    //加载HTML
    [_webView loadRequest:[NSURLRequest requestWithURL:url]];
iOS监听JS事件
//html代码,给a标签添加点击事件,传递参数‘0’
<a onclick="selReader('0');">

//iOS代码
//导入系统框架
#import <JavaScriptCore/JavaScriptCore.h>

//在webView加载完成后设置js事件的回调函数
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
    //创建js句柄
    _context = [_webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    
    //为 js的selReader事件添加回调
    _context[@"selReader"] = ^(NSString *row){
        NSLog(@"%@", row);
    };
}
iOS调用JS函数
//JS文件中定义函数,根据传递进来的数组,动态添加标签
function updateTable(datasource) {
    for(i in datasource) {
         //生成标签的文本
        var func = "\'" + i + "\'"; //拼接标签点击事件的参数
        
        //创建div标签,给div标签指定类,添加点击事件
        var text = '<div class = "reader" onclick="selectReader(' + func + ');">' + '<p>' + datasource[i] + '</p>' +'<hr>' +'</div>';
        //追加标签
        $("#deviceList").append(text);
    }
}

//iOS文件
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
    _context = [_webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    
    //html的数据源
    NSArray *dataSource = @[@"FT_000000001", @"FT_000000002", @"FT_000000003"];
    
    //获取JS定义的updateTable函数
    JSValue *function = _context[@"updateTable"];
    
    //调用JS函数
    [function callWithArguments:@[dataSource]];
    
    //监听div标签的点击事件
    _context[@"selectReader"] = ^(NSString *reader){
        NSLog(@"%@", reader);
    };
}

转载于:https://my.oschina.net/mexiaobai1315/blog/1621743

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值