js 与oc 交互
来源:互联网 发布:淘宝怎么输入淘口令 编辑:程序博客网 时间:2024/06/06 15:41
现在随着html5的发展。越来越多的公司采用混合式开发。这主要基于html5的跨平台,简单.可以节约开发成本和开发时间。在iOS与H5开发中最重要的就是js交互。下面就以ocy与js操作,简单聊聊。
1 本地 html与oc
html 如下;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#three{
position:absolute; //通过
left:400px;
top:40px;
width:100px;
height:100px;
background-color:blue;
}
</style>
</head>
<body>
<div id="three">
</div>
<p></p>
<p></p>
<br/>
<br/>
<img src="img/屏幕快照 2017-01-04 下午9.50.32.png" />
</script>
</body>
</html>
在body上添加了 一个div 给了些宽高;一张图片
new file 新建一个文件 index.html 注意后缀
oc 中 webview加载:
#import "ViewController.h"
@interface ViewController ()<UIWebViewDelegate>
@property(nonatomic,strong)UIWebView* webView;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.webView=[[UIWebViewalloc]init];
self.webView.frame=CGRectMake(0,0,self.view.frame.size.width,300);
[self.viewaddSubview:self.webView];
//!!!
self.webView.delegate=self;
NSURL *path=[[NSBundlemainBundle]URLForResource:@"index"withExtension:@"html"];
NSURLRequest *request=[NSURLRequestrequestWithURL:path];
[self.webViewloadRequest:request];
}
// 网页加载完成
-(void)webViewDidFinishLoad:(UIWebView *)webView{
//删除蓝色div
NSString*str=@"var delegate = document.getElementById('three');delegate.remove();";
NSString*pt=@"/Users/yst911521/Desktop/Html5_js_01/Html5_js_01/屏幕快照 2016-12-31 下午4.49.34.png";
//替换图片
NSString*st2=[NSStringstringWithFormat:@"var img= document.getElementsByTagName('img')[0];img.style.width='100px';img.style.height='100px';img.src='%@';",pt];
[self.webViewstringByEvaluatingJavaScriptFromString:str];
[self.webViewstringByEvaluatingJavaScriptFromString:st2];
}
@end
通过webviewdelegate 里的代理方法 在html加载完成 时处理
NSString*str=@"var delegate = document.getElementById('three');delegate.remove();";
//var delegate = document.getElementById('three')
获取 id = 'three' 的div
delegate.remove(); //这句就是删除掉delegate 也就是 id =‘three’的div
//更换图片
NSString*pt=@"/Users/yst911521/Desktop/Html5_js_01/Html5_js_01/屏幕快照 2016-12-31 下午4.49.34.png";
//替换图片
NSString*st2=[NSString stringWithFormat:@"var img= document.getElementsByTagName('img')[0];img.style.width='100px';img.style.height='100px';img.src='%@';",pt];
pt 为工程中图片路径
st2 var img= document.getElementsByTagName('img')[0];//获取图片标签 (获取图片标签有多种防方式 1 id 2 class 3 name 4 typeclass 这里采用 4)
img.style.width='100px';img.style.height='100px'; //改变图片的宽高
//img.src='%@';",pt ;这句就是跟换图片 src 引用本地资源 用本地一张图片替换
2 服务其请求html
同理拿到标签 进行修改 。唯一的区别是需要看懂别人的html根据不同情况 用不同方法拿到标签
3 html 调用 oc
有时需要html里的点击事件 进行操作
同样创建webview 遵循代理
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button onclick="getimage();">调用oc</button>
//js
<script type="text/javascript">
function getimage(){
window.location.href='yst://getimage';
//alert(0);
}
</script>
</body>
</html>
//创建了一个button
oc加载html
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor=[UIColorwhiteColor];
self.webView=[[UIWebViewalloc]init];
self.webView.frame=CGRectMake(0,0, self.view.frame.size.width,300);
[self.viewaddSubview:self.webView];
//!!!
self.webView.delegate=self;
NSURL *path=[[NSBundlemainBundle]URLForResource:@"htmlUserOc.html5"withExtension:@"html"];
NSURLRequest *request=[NSURLRequestrequestWithURL:path];
[self.webViewloadRequest:request];
self.pickER=[[UIImagePickerControlleralloc]init];
}
//拦截请求
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSString*str =request.URL.absoluteString;
NSLog(@"******%@",str);
NSRange range = [strrangeOfString:@"yst://"];
if (range.location !=NSNotFound) {
NSString * mm = [strsubstringFromIndex:range.location +range.length];
SEL sel =NSSelectorFromString(mm);
[selfperformSelector:sel ];
}
// NSLog(@"---%@",mm);
returnYES;
}
//点击时改变背景色
-(void)getimage{
self.view.backgroundColor=[UIColorgreenColor];
}
- oc与js 交互
- oc与js交互
- JS与OC交互
- js与oc 交互
- OC与JS交互
- OC与JS交互
- OC与JS交互
- OC与JS交互
- OC 与JS 交互
- OC与JS交互
- oc 与 js 交互
- OC与JS交互
- OC与JS交互
- oc与js交互
- js与oc交互
- js 与oc 交互
- oc与js交互-----WKWebView
- 54.OC与js交互
- Android仿QQ主界面
- 牛逼的博客、网站、书籍等收藏!!!
- android progressbar
- 用jmap和jps查看对象数量
- Android安全机制
- js 与oc 交互
- 正则表达式详解
- HTML5 学习笔记5-表单新增元素和属性(续写)
- Spring项目配置简介和Maven配置
- 纹理(Textures)
- 匿名函数
- 楼主帖子值得读
- 基于多台linux主机通过1台服务器进行socket通讯小程序编写
- 泛型