问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ios webview js 会不会调方法

发布网友 发布时间:2022-04-24 20:26

我来回答

1个回答

热心网友 时间:2022-04-27 10:54

iOS中偶尔也会用到webview来显示一些内容,比如新闻,或者一段介绍。但是用的不多,现在来教大家怎么使用js跟webview进行交互。
这里就拿点击图片获取图片路径为例:
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.可以看到,这里只显示一张图片

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下面说。
5.在controller中加载这一段js代码
[_webview stringByEvaluatingJavaScriptFromString:[NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"test" withExtension:@"js"] encoding:NSUTF8StringEncoding error:nil]];

你还可以直接把js代码放到html中,效果是一样的。
6.在webview的代理方法中,我们用去调用第一个js方法
-(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/wupei/Library/Application%20Support/iPhone%20Simulator/7.1-64/Applications/C4F814F6-088D-444F-A508-40AB5C775567/webview.app/test.png

可以看到控制台打印了图片路径出来。因为这里用的是本地图片,网络图片也是同样的道理。这样就可以实现点击图片获取到他的路径了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
xbox360和PS3要多少钱 xbox360和ps3买那个好本人只有1500应该够吧我想在这两个游戏机里买一... XBOX360单机标配多少钱 现在买ps2,ps3,还是xbox360好,学生党没什么钱 帮忙看下xbox360能卖多少钱?换台ps3或4行不行? 矛与盾《韩非子》 韩非子·安危第二十五原文4 韩非子·安危第二十五作者简介 韩非子·安危第二十五原文二 韩非子·安危第二十五原文一 webview和js交互出现广告穿插怎样解决 ios 村级后备干部几年一换 webview调用页面js的时候,怎么判断页面是否有这个js 村级后备干部 与村官有啥不同 请教js如何判断是webview打开还是浏览器 村干部竞选落选都还能当后备干部培养吗? webview与js交互的参数有没有限制 webview js 与 java 交互 村级后备力量培养“四个一批”使用机制? webview 远程js调用本地java实现交互怎么做? 新一届村两委如何打造一支群众满意度高,战斗力强的村两委班子队伍 如何处理webview与js之间交互 js获取webview参数 我在光启71团兼职被骗了,有没有人和我一样的经历 职业性硬皮病有哪些症状 系统性硬皮病哪里有专科医院 光启1615团兼职收299元入会费是真的吗 这个硬 皮 病早 期症 状有哪些? 硬皮病的诊断 光启平台刷单是骗人的吗 有没有适合减脂人士吃的零食推荐? 怎么在webview中访问本地js文件 村级后备干部考试都考什么东西啊 村里招后备干部 android java怎么调用webview中js方法 WebView中的JavaScript为什么不执行 减肥嘴馋能吃什么零食 魅族3怎么设多屏互动 有哪些食品或者零食,适合减肥的时候吃? 有减脂期适合吃的零食吗? 现在百度贴吧不能用邮箱注册账号了吗 吃什么零食能减肥 电流互感器LB6-110W3/1XG可以倾倒吗 百度贴吧为什么不能用邮箱注册??? 泰安开关厂如何?请评价一下 怎样从型号上辨别电流互感器类型 电力电网设备型号、参数诠释??? 为什么不同牌子的衣服尺码不一样啊 关于java 继承的JFrame的类显示不出里面的容器 急求一个用JAVA语言编写的计算器小程序