js与webview进行交互

iOS中偶尔也会用到webview来显示一些内容,比如新闻,或者一段介绍。但是用的不多,现在来教大家怎么使用jswebview进行交互。

这里就拿点击图片获取图片路径为例:

1.测试页面html

<!doctype html>

<html>

  <head>

  </head>

  <body>

    <div>

     <img src="test.png"/> 

    </div>

  </body>

</html>

2.然后我们在controller中加载这一段html

[_webview loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle]URLForResource:@"work" withExtension:@"html"]]];

3.加载相关js文件,命名为test.js

function setImageClickFunction(){

  var imgs = document.getElementsByTagName("img");

  for (var i=0;i<imgs.length;i++){

    var src = imgs[i].src;

    imgs[i].setAttribute("onClick","click(src)");

  }

  document.location = imageurls;

}


function click(imagesrc){

  var url="ClickImage:"+imagesrc;

  document.location = url;

}

这里说下两个方法的意思(对那些不熟悉js的有帮助):第一个是给你的webview里所有图片加上点击事件,第二个方法为点击后返回图片的URL,关于接收这个URL下面说。

4.controller中加载这一段js代码

[_webview stringByEvaluatingJavaScriptFromString:[NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"test" withExtension:@"js"] encoding:NSUTF8StringEncoding error:nil]];

你还可以直接把js代码放到html中,效果是一样的。

5.webview的代理方法中,我们用去调用第一个js方法

-(void)webViewDidFinishLoad:(UIWebView *)webView

{

     [_webview stringByEvaluatingJavaScriptFromString:@"setImageClickFunction()"];

}

,这里也就是说在webview加载完后给他绑定上点击事件。好了,最后就是接收URL

6.接收js返回值,当点击图片的时候会实现这个代理方法(每次加载webview都会显示),然后我们输出他的返回值看看

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

  

  NSString *path=[[request URL] absoluteString];

  

  NSLog(@"%@",path);

  return YES;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值