UIWebView与JS交互上

网上有很多这样的文章,但是各种需求是不同的,这篇博客主要记录现在做的这个项目里需要用到的UIWebViewJS交互的内容,我自己对JS不懂,只是为了实现这个功能才去看了点点,先说说这个蛋疼的功能吧,公司要用UIWEBVIEW去展示富文本,然后还需要手动替换里面的图片(额,这个实际上不是这样的,为了说着方便就先这样说吧...),富文本是给你一串JASON字符串,自己去提取的,提取出来就像下面这个

NSString *htmlString = @"<p> <img src='/note/image?id=2359' /> <img src='http://manyou.mobi/data/image/d7/76/d776842b4108a5fed63f4094fa2b92a3_c50x50.jpg' />/p> <p> 这是第一条动态 </p> <p> 可是矮人们召回了我 </p><p> 这是第二条动态 </p>";

需要把这html里为

<img src='/note/image?id=2359' />

的图片替换成本地的图片,需求知道了,现在开始动手做吧,


先是用uiwebview载入html;这个网上有很多教程了,

myWebView.delegate = self;
[myWebView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]bundlePath]]];

需要注意的是这个baseURL,这个是uiwebview去寻找资源(图片,jscss...)的路径,可以设置为网址或本地路径

这一篇只记录uiwebview去和js交互,下一篇再记录jsuiwebview交互

直接贴代码吧:(额,老是出些乱码,请无视<span style="white-space:pre"> </span>这个操蛋玩意...)

- (void)webViewDidFinishLoad:(UIWebView *)webView
{   
 [myWebView stringByEvaluatingJavaScriptFromString:@" var script = document.createElement('script'); "   
     " script.type = 'text/javascript'; "
     " script.text = \"function myFunction() { "    		// 到这里为止是声明这是一个js函数,名为myFunction()
 	"var path = 'IMG_1.jpg';" 				//定义一个变量,存放本地图片名 
	"var path1 = '/note/image?id=2359';" 			//定义一个变量,存放需要替换的图片名
	"var img = document.getElementsByTagName('img');" 	//js里操作DOM,获取TagName为'img'的元素,这里得到的是一个数组
    	"for (var i = 0; i < img.length; i++) {"
     	"if (img[i].getAttribute('src') == path1) {"       	//获取每个'img'的'src'(图片地址),比较
    	"img[i].setAttribute('src' , path);"                	//如果符合,就进行替换
     	"}}}myFunction();\"; "                          	// 到这里是这个函数里的内容,调用myFunction()
     	" document.getElementsByTagName('img')[0].appendChild(script); "];  	//把这段JS插入
}


额,当然,这个是写死了,只能替换一张特定的图片,如果想动态提换多张图片呢?那就需要把这段js代码拆分,用字符串去拼接了。


额,就记录到这吧...


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值