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 实战的更多相关文章

  1. IOS-网络(网页开发-UIWebView,HTML,CSS,JavaScript,OC和JS代码互调)

    一.网页基础 // // ViewController.m // IOS_0218_网页开发1 // // Created by ma c on 16/2/18. // Copyright © 201 ...

  2. UIWebView中Html中用JS调用OC方法及OC执行JS代码

    HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...

  3. [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]

    原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...

  4. JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz

     iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码)     最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...

  5. OC和JS代码的互调

    01 OC调用JS的代码 NSString *str = [self.webView stringByEvaluatingJavaScriptFromString:@"sum()" ...

  6. iOS开发--OC调用JS篇

    OC调用JS篇 其中相对应的html部分如下: <html> <header> <meta http-equiv="Content-Type" con ...

  7. 在Java中直接调用js代码(转载)

    http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...

  8. cordova ios --->OC 调用 js (一)

    1.在HTML中定义一个函数如OCcallJS() function OCcallJS(){ alert("OC 调用js 的 方法"); } 2.当webview 加载完成的时候 ...

  9. 在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...

随机推荐

  1. Python 入门介绍

    写在前面 开始介绍Python之前, 先回顾一下编译型语言和解释型语言的概念和区别. 计算机能直接识别只能是机器语言, 所以使用高级语言编写的程序必须翻译成机器语言,计算机才能执行. 翻译的方式有两种 ...

  2. jquery代码实现简单的五星评价功能!

    实现: 1,鼠标移动到第三个星星,则一二三星星变亮,后两个变暗 2,鼠标点击某个星星后,可以继续选择,但拿开后星星会定格住你点击的位置 <script type="text/javas ...

  3. Mybatis原理图

    Mybatis原理图 MyBatis 是一个基于Java的持久层框架.它提供的持久层框架包括SQL Maps和Data Access Objects(DAO). MyBatis 是支持普通 SQL查询 ...

  4. sublime text3 3103 激活码

    —– BEGIN LICENSE —–Michael BarnesSingle User LicenseEA7E-8213858A353C41 872A0D5C DF9B2950 AFF6F667C4 ...

  5. 【CentOS如何最小化安装】

    近来发现越来越多的运维小伙伴们都有最小化安装系统的洁癖,因此,找老男孩来咨询,这个"洁癖"好习惯啊,必须支持,,因此发布本文和大家分享下. (1)系统安装类型选择及自定义额外包组 ...

  6. 将List 中的ConvertAll的使用:List 中的元素转换,List模型转换, list模型转数组

    一,直接入代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using S ...

  7. centos jdk 安装

    1)下载JDK 1.7(1.7.0_25) 下载地址为: http://www.Oracle.com/technetwork/java/javase/downloads/jdk7-downloads- ...

  8. [ An Ac a Day ^_^ ] hdu 2830 矩阵交换II

    第一眼觉得是个dp 但是有了可以随意交换的条件觉得简单了不少 但是还是没做出来…… 看了一下别人的做法才觉得自愧不如 因为所有列都可以随意交换 应该尽量把长的放在一起 那么将所有的矩形排序之后 以第j ...

  9. vue 2.0 无法编译ES6语法

    # vue2.0 webpack 无法编译 ES6 语法 之前在使用 vue 1.x 时用 vue-loader@8.0.0 版本可以正常打包vue的代码,包括ES6语法也能正常转为ES5语法,但是当 ...

  10. UGUI和现实世界的比例关系

    之前测试过默认大小的 Cube 在现实中的 比例关系,得出基本单位为 m 的结论,至于 UGUI和现实世界的比例关系 看下图就知道了: Cube Collider 的大小: Button 的大小: 其 ...