OC 调用JS 代码 处理HTML5 实战
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #e82300 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #587ea8 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; min-height: 16.0px }
span.s1 { }
span.s2 { color: #35568a }
span.s3 { color: #c35900 }
span.s4 { color: #000000 }
span.s5 { color: #587ea8 }
span.s6 { color: #e82300 }
span.s7 { color: #777997 }
直接贴代码了;已经懒到极致了!
需求: 解决服务器传过来的js代码,并正确的按想要的排版方式显示在页面上(即适配移动端各个屏幕)
解决方案: 加载前提前拦截修改适配样式 (当然也可以前端做适配各个平台, 不过移动端做了处理就不用理会前端是否适配的问题)
处理的问题有: 适配文字大小; 适配图片大小; 适配视频大小;
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #587ea8 }
span.s1 { }
span.s2 { color: #35568a }
span.s3 { color: #c35900 }
span.s4 { color: #000000 }
span.s5 { color: #777997 }
span.s6 { color: #e82300 }
span.s7 { font: 14.0px "PingFang SC"; color: #e82300 }
- (void)parseHTMLWithHtml:(NSString *)htmls {
self.content.alpha = 0;
self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(15, CGRectGetMaxY(_imagesView.frame) , kWIDTH_SCREEN -30, kHEIGHT_SCREEN/2 )];
[self.scroll addSubview:self.webView];
self.webView.scrollView.scrollEnabled = NO;
self.webView.delegate = self;
self.webView.backgroundColor = [UIColor whiteColor];
self.scroll.contentSize = CGSizeMake(kWIDTH_SCREEN -30 , CGRectGetMaxY(self.webView.frame)+64+20);
[SVProgressHUD showWithStatus:@"努力加载..."];
htmls = [htmls stringByReplacingOccurrencesOfString:@"<br/>" withString:@""];
[self.webView loadHTMLString:htmls baseURL:nil];
[self.webView addObserver:self forKeyPath:@"loading" options:NSKeyValueObservingOptionNew context:nil];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '75%'"];
NSString *js=@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text = \"function ResizeImages() { "
"var myimg,oldwidth;"
"var maxwidth = %f;"
"for(i=0;i <document.images.length;i++){"
"myimg = document.images[i];"
"if(myimg.width > maxwidth){"
"oldwidth = myimg.width;"
"myimg.width = %f;"
"}"
"}"
"}\";"
"document.getElementsByTagName('head')[0].appendChild(script);";
js=[NSString stringWithFormat:js,[UIScreen mainScreen].bounds.size.width-30 ,[UIScreen mainScreen].bounds.size.width-45];
[webView stringByEvaluatingJavaScriptFromString:js];
[webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];
NSString *js2 =@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text = \"function ResizeVideo() { "
"var number = (document.getElementsByTagName('iframe')[0].height / document.getElementsByTagName('iframe')[0].width);"
"document.getElementsByTagName('iframe')[0].width= %f;"
"document.getElementsByTagName('iframe')[0].height= document.getElementsByTagName('iframe')[0].width * number ;"
"}\";"
"document.getElementsByTagName('head')[0].appendChild(script);";
js2 = [NSString stringWithFormat:js2,[UIScreen mainScreen].bounds.size.width-30 ];
[webView stringByEvaluatingJavaScriptFromString:js2];
[webView stringByEvaluatingJavaScriptFromString:@"ResizeVideo();"];
CGFloat webViewHeight=[webView.scrollView contentSize].height;
CGRect newFrame = webView.frame;
newFrame.size.height = webViewHeight;
webView.frame = newFrame;
self.scroll.contentSize = CGSizeMake(kWIDTH_SCREEN - 30, CGRectGetMaxY(webView.frame) - kHEIGHT_SCREEN/3);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.8 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[SVProgressHUD dismiss];
});
}
OC 调用JS 代码 处理HTML5 实战的更多相关文章
- IOS-网络(网页开发-UIWebView,HTML,CSS,JavaScript,OC和JS代码互调)
一.网页基础 // // ViewController.m // IOS_0218_网页开发1 // // Created by ma c on 16/2/18. // Copyright © 201 ...
- UIWebView中Html中用JS调用OC方法及OC执行JS代码
HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...
- [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...
- JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz
iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...
- OC和JS代码的互调
01 OC调用JS的代码 NSString *str = [self.webView stringByEvaluatingJavaScriptFromString:@"sum()" ...
- iOS开发--OC调用JS篇
OC调用JS篇 其中相对应的html部分如下: <html> <header> <meta http-equiv="Content-Type" con ...
- 在Java中直接调用js代码(转载)
http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...
- cordova ios --->OC 调用 js (一)
1.在HTML中定义一个函数如OCcallJS() function OCcallJS(){ alert("OC 调用js 的 方法"); } 2.当webview 加载完成的时候 ...
- 在Java中直接调用js代码
JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...
随机推荐
- ajax的分页查询(不刷新页面)
既然是分页查询,那么就要有张数据很多的表,可以让它进行分页显示,用普通的方法进行分页查询必然是要刷新页面的,这里要实现不刷新页面进行分页显示数据,就要用到ajax方式.进行编写代码 (1)先写个显示数 ...
- 数据库(MySQL)表基本操作
数据库表基本操作 思前想后,最终还是把博客的名字改成了数据库表基本操作,以前叫SQL语句大全,感觉用"大全"这个名词 ...
- Docker 基础 : 网络配置
大量的互联网应用服务包含多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合.Docker 目前提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务.接下来我们将讲述 Docker ...
- 国内的阿里云MAVEN仓库,速度很快
配置很简单,修改conf文件夹下的settings.xml文件,添加如下镜像配置: <mirrors> <mirror> <id>alimaven</id&g ...
- 试图解释下ERP
ERP,字面的意思就是企业资源规划.但现在基本上是企业信息系统的统称,过去叫MIS.我们就是有这个本事,不管什么高大上的事物,很快就会做的很烂. 你可以这样理解ERP. 现在来了个订单,你需要回答下面 ...
- JSON 与 对象 、集合 之间的转换
JSON字符串和java对象的互转[json-lib] 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很 ...
- iOS 加载Image的两种方式
Apple官方文档对于加载image提供了两个方法 + (nullable UIImage *)imageNamed:(NSString *)name; + (nullable UIImage *)i ...
- JavaEE XML SAX解析
SAX解析XML @author ixenos SAX解析工具 SAX解析工具- Sun公司提供的.内置在jdk中.org.xml.sax.* 核心的API: SAXParser类: 用于读取和解析 ...
- jxl 导入excel
jsp部分 <div class="modal-dialog"> <div class="modal-content"> <div ...
- Qt编译
版本及安装环境 项目 版本 位 Windows 7 x64 Visual Studio 2010 x64 qt 4.8.6 x64 下载源码 进入下载列表,下载qt-everywhere-openso ...