uiwebview 编辑html5,【iOS】UIWebView HTML5 扩展
对于不少iOS开发者来说,HTML5的内容比较陌生。
尤其是UIWebView类的stringByEvaluatingJavaScriptFromString 方法
让很多人觉得又得学一种新的语言。
而这一部分也是项目中学生常问的问题之一。
本文以Category(类目)的方式扩展了UIWebView类,将一些常用的JavaScript操作封装成UIWebView类方法。
最新源代码下载地址:https://github.com/duzixi/UIWebView-HTML5(持续维护)
原文首发地址:http://blog.csdn.net/duzixi/article/details/36047201
头文件(UIWebView+HTML5.h):
//
// UIWebView+HTML5.h
// WebViewJS
//
// Created by 杜子兮(duzixi) on 14-6-30.
// Edited by 杜子兮(duzixi) on 14-7-11. 修改网页图片显示大小
// 添加(jQuery)
// Copyright (c) 2014年 lanou3g.com 蓝鸥. All rights reserved.
//
#import @interface UIWebView (JavaScript)
#pragma mark -
#pragma mark 获取网页中的数据
/// 获取某个标签的结点个数
- (int)nodeCountOfTag:(NSString *)tag;
/// 获取当前页面URL
- (NSString *) getCurrentURL;
/// 获取标题
- (NSString *) getTitle;
/// 获取图片
- (NSArray *) getImgs;
/// 获取当前页面所有链接
- (NSArray *) getOnClicks;
#pragma mark -
#pragma mark 改变网页样式和行为
/// 改变背景颜色
- (void) setBackgroundColor:(UIColor *)color;
/// 为所有图片添加点击事件(网页中有些图片添加无效)
- (void) addClickEventOnImg;
/// 改变所有图像的宽度
- (void) setImgWidth:(int)size;
/// 改变所有图像的高度
- (void) setImgHeight:(int)size;
/// 改变指定标签的字体颜色
- (void) setFontColor:(UIColor *) color withTag:(NSString *)tagName;
/// 改变指定标签的字体大小
- (void) setFontSize:(int) size withTag:(NSString *)tagName;
@end
实现文件(UIWebView+HTML5.m):
//
// UIWebView+HTML5.m
//
// Created by 杜子兮(duzixi) on 14-6-30.
// Edited by 杜子兮(duzixi) on 14-7-11. 修改网页图片显示大小
// 添加(jQuery)
// Copyright (c) 2014年 lanou3g.com 蓝鸥. All rights reserved.
//
#import "UIWebView+HTML5.h"
#import "UIColor+Change.h"
@implementation UIWebView (JavaScript)
#pragma mark -
#pragma mark 获取网页中的数据
/// 获取某个标签的结点个数
- (int)nodeCountOfTag:(NSString *)tag
{
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('%@').length", tag];
int len = [[self stringByEvaluatingJavaScriptFromString:jsString] intValue];
return len;
}
/// 获取当前页面URL
- (NSString *)getCurrentURL
{
return [self stringByEvaluatingJavaScriptFromString:@"document.location.href"];
}
/// 获取标题
- (NSString *)getTitle
{
return [self stringByEvaluatingJavaScriptFromString:@"document.title"];
}
/// 获取所有图片链接
- (NSArray *)getImgs
{
NSMutableArray *arrImgURL = [[NSMutableArray alloc] init];
for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].src", i];
[arrImgURL addObject:[self stringByEvaluatingJavaScriptFromString:jsString]];
}
return arrImgURL;
}
/// 获取当前页面所有点击链接
- (NSArray *)getOnClicks
{
NSMutableArray *arrOnClicks = [[NSMutableArray alloc] init];
for (int i = 0; i < [self nodeCountOfTag:@"a"]; i++) {
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('a')[%d].getAttribute('onclick')", i];
NSString *clickString = [self stringByEvaluatingJavaScriptFromString:jsString];
NSLog(@"%@", clickString);
[arrOnClicks addObject:clickString];
}
return arrOnClicks;
}
#pragma mark -
#pragma mark 改变网页样式和行为
/// 改变背景颜色
- (void)setBackgroundColor:(UIColor *)color
{
NSString * jsString = [NSString stringWithFormat:@"document.body.style.backgroundColor = '%@'",[color webColorString]];
[self stringByEvaluatingJavaScriptFromString:jsString];
}
/// 为所有图片添加点击事件(网页中有些图片添加无效,需要协议方法配合截取)
- (void)addClickEventOnImg
{
for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {
//利用重定向获取img.src,为区分,给url添加'img:'前缀
NSString *jsString = [NSString stringWithFormat:
@"document.getElementsByTagName('img')[%d].onclick = \
function() { document.location.href = 'img' + this.src; }",i];
[self stringByEvaluatingJavaScriptFromString:jsString];
}
}
/// 改变所有图像的宽度
- (void) setImgWidth:(int)size
{
for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].width = '%d'", i, size];
[self stringByEvaluatingJavaScriptFromString:jsString];
}
}
/// 改变所有图像的高度
- (void) setImgHeight:(int)size
{
for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].height = '%d'", i, size];
[self stringByEvaluatingJavaScriptFromString:jsString];
}
}
/// 改变指定标签的字体颜色
- (void)setFontColor:(UIColor *)color withTag:(NSString *)tagName
{
NSString *jsString = [NSString stringWithFormat:
@"var nodes = document.getElementsByTagName('%@'); \
for(var i=0;i
uiwebview 编辑html5,【iOS】UIWebView HTML5 扩展相关推荐
- html5 ios number,HTML5 Scorecard: The New iPad and iOS 5.1 — A Mixed Bag
Apple's new iPad has a beautiful screen, but often struggles to smoothly display and scale even aver ...
- html5 苹果 代码,iOS 8 HTML5性能测试:苹果有多爱HTML5?
(本文由CocoaChina翻译自跨平台移动Web开发框架Sencha的博客,作者Ross Gerbasi.) 我们和其他人一样,对于前不久苹果iOS 8的发布感到十分激动.在做这个测试的时候,我们手 ...
- 关于iOS 8 HTML5性能测试:苹果有多爱HTML5?
我们和其他人一样,对于前不久苹果iOS 8的发布感到十分激动.在做这个测试的时候,我们手中只有iOS 8 GA版,但我们想最快的将测试结果提供给全球的web开发者,所以这个测试结果和iOS 8正式版的 ...
- android webview ios uiwebview和wkwebview的交互以及本地缓存
android webview js调用java的方式 1.java通过注解@JavascriptInterface导出方法, js通过window.别名.方法名调用方法 2.拦截url方式,通过sh ...
- 上传图片方向不对 php,如何解决IOS中html5上传图片方向问题?
这篇文章主要介绍了IOS中html5上传图片方向问题解决方法的相关资料,需要的朋友可以参考下 用html5编写图片裁切上传,在iphone手机上可能会遇到图片方向错误问题,在此把解决方法和大家分享一下 ...
- iOS UIWebView
设置背景透明设置webview的backgroundColor属性为[UIColor clearColor];webView.backgroundColor = [UIColor clearColor ...
- 突袭HTML5之Javascript API扩展4 - 拖拽
拖拽(Drag/Drop)是个非常普遍的功能.你可以抓住一个对象,并且拖动到你想放置的区域. 很多javascript都类似实现了相关的功能,例如,jQueryUI的drag and drop组件.在 ...
- html5图片邀请函,html5,邀请函.doc
html5,邀请函 html5,邀请函 看来HTML5的浪潮又要让我们的广告客户浑身湿透了.他们想要华丽的页面,想要让用户觉得他们很酷.事实上,即使他们只做了一张很廉价的"活动邀请函&quo ...
- sx html5编辑器,SX HTML5全栈可视编辑器
需要使用到一些HTML5编辑器的话,可以使用SX HTML5全栈可视编辑器,功能多,完全的可以支持目前大部分的平台,不管是微信公众号还是小程序,都是可以在这里进行编辑的! SX HTML5全栈可视编辑 ...
- html5 drag this,HTML5拖放(drag和drog)
拖放(drag和drog)是HTML5的标准的组成部分,也是种常见的特性,意义为抓起一个元素放入到另外的一个位置,在HTML5中任何元素都可以被拖放,前题是要相关进行设置. 1.设置元素为可拖放,也就 ...
最新文章
- 国内有没有能媲美Jira的测试管理工具?我们找国内产品来测评一下
- 一个员工的离职,背后都意味着什么?
- ASP.NET 第五天 CSS在支付宝中的应用
- Linux RPM 相关
- 点击lable标出现下拉搜索框及选择功能
- Linux 初始root密码设置
- 选哪个云计算平台部署自己的网站?
- 【iOS开发】企业版证书($299)In-House方式发布指南
- Easeljs之regX/regY详解
- 应急指挥中心建设方案
- vmware fusion8 序列号
- jenkins下载插件很慢
- 社会语义网络图用什么软件绘制_GitMind:免费在线思维导图软件
- mate40怎么用鸿蒙系统,怎么使用鸿蒙系统?
- 雅诗兰黛公司发布2019会计年度企业责任报告,重点介绍公民责任和可持续发展目标进展
- 电机开环控制与闭环控制
- 仓库管理系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 高德地图API调用和数据解析
- Java游戏用户登录注册_用java类模拟游戏的账号的登陆,注册,退出。 1.没有账号,需要注册。 2.注册完成后方可登...
- 计算机中什么是适配器及作用,什么是电脑适配器
热门文章
- 《掌门1对1微服务体系 Solar | 阿里巴巴 Sentinel 落地实践》
- 一文纵览自然语言生成的发展
- 开源工具Arena,数据科学家再也不用为Kubernetes犯难啦!
- 2017双11技术揭秘—阿里巴巴数据库技术架构演进
- 云原生与AI时代的存储该是什么样?新华三发布全NVMe智能闪存与智慧中枢数据平台
- 重磅!Python又第一了!网友:为什么找不到好工作?真相让人脸红…
- 强推!2019年最火的容器、K8S和DevOps入门都在这了
- 一部刷爆朋友圈的5G短片,看完才知道5G多暖多重要!
- dos系统重启计算机名,dos系统重启的命令是是
- oracle 如何迁移到 mysql_怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL...