iOS中UIWebView使用JS交互

iOS中偶尔也会用到webview来显示一些内容,好比新闻,或者一段介绍。可是用的很少,如今来教你们怎么使用js跟webview进行交互。javascript

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

1.测试页面htmljava

<!doctype html><html>  <head>      </head>  <body>    <div>            <img src="test.png"/>          </div>  </body></html>

2.而后咱们在controller中加载这一段htmlweb

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

3.能够看到,这里只显示一张图片ruby

4.加载相关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下面说。app

5.在controller中加载这一段js代码测试

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

你还能够直接把js代码放到html中,效果是同样的。lua

6.在webview的代理方法中,咱们用去调用第一个js方法url

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
     [_webview stringByEvaluatingJavaScriptFromString:@"setImageClickFunction()"];
}

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

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

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{    
    NSString *path=[[request URL] absoluteString];
       NSLog(@"%@",path);
       return YES;
}
2014-10-03 19:39:37.099 webview[31153:60b] ClickImage:file:///Users/zhiwupei/Library/Application%20Support/iPhone%20Simulator/7.1-64/Applications/C4F814F6-088D-444F-A508-40AB5C775567/webview.app/test.png

能够看到控制台打印了图片路径出来。由于这里用的是本地图片,网络图片也是一样的道理。这样就能够实现点击图片获取到他的路径了。

相关文章
相关标签/搜索