对于不少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 扩展相关推荐

  1. 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 ...

  2. html5 苹果 代码,iOS 8 HTML5性能测试:苹果有多爱HTML5?

    (本文由CocoaChina翻译自跨平台移动Web开发框架Sencha的博客,作者Ross Gerbasi.) 我们和其他人一样,对于前不久苹果iOS 8的发布感到十分激动.在做这个测试的时候,我们手 ...

  3. 关于iOS 8 HTML5性能测试:苹果有多爱HTML5?

    我们和其他人一样,对于前不久苹果iOS 8的发布感到十分激动.在做这个测试的时候,我们手中只有iOS 8 GA版,但我们想最快的将测试结果提供给全球的web开发者,所以这个测试结果和iOS 8正式版的 ...

  4. android webview ios uiwebview和wkwebview的交互以及本地缓存

    android webview js调用java的方式 1.java通过注解@JavascriptInterface导出方法, js通过window.别名.方法名调用方法 2.拦截url方式,通过sh ...

  5. 上传图片方向不对 php,如何解决IOS中html5上传图片方向问题?

    这篇文章主要介绍了IOS中html5上传图片方向问题解决方法的相关资料,需要的朋友可以参考下 用html5编写图片裁切上传,在iphone手机上可能会遇到图片方向错误问题,在此把解决方法和大家分享一下 ...

  6. iOS UIWebView

    设置背景透明设置webview的backgroundColor属性为[UIColor clearColor];webView.backgroundColor = [UIColor clearColor ...

  7. 突袭HTML5之Javascript API扩展4 - 拖拽

    拖拽(Drag/Drop)是个非常普遍的功能.你可以抓住一个对象,并且拖动到你想放置的区域. 很多javascript都类似实现了相关的功能,例如,jQueryUI的drag and drop组件.在 ...

  8. html5图片邀请函,html5,邀请函.doc

    html5,邀请函 html5,邀请函 看来HTML5的浪潮又要让我们的广告客户浑身湿透了.他们想要华丽的页面,想要让用户觉得他们很酷.事实上,即使他们只做了一张很廉价的"活动邀请函&quo ...

  9. sx html5编辑器,SX HTML5全栈可视编辑器

    需要使用到一些HTML5编辑器的话,可以使用SX HTML5全栈可视编辑器,功能多,完全的可以支持目前大部分的平台,不管是微信公众号还是小程序,都是可以在这里进行编辑的! SX HTML5全栈可视编辑 ...

  10. html5 drag this,HTML5拖放(drag和drog)

    拖放(drag和drog)是HTML5的标准的组成部分,也是种常见的特性,意义为抓起一个元素放入到另外的一个位置,在HTML5中任何元素都可以被拖放,前题是要相关进行设置. 1.设置元素为可拖放,也就 ...

最新文章

  1. 国内有没有能媲美Jira的测试管理工具?我们找国内产品来测评一下
  2. 一个员工的离职,背后都意味着什么?
  3. ASP.NET 第五天 CSS在支付宝中的应用
  4. Linux RPM 相关
  5. 点击lable标出现下拉搜索框及选择功能
  6. Linux 初始root密码设置
  7. 选哪个云计算平台部署自己的网站?
  8. 【iOS开发】企业版证书($299)In-House方式发布指南
  9. Easeljs之regX/regY详解
  10. 应急指挥中心建设方案
  11. vmware fusion8 序列号
  12. jenkins下载插件很慢
  13. 社会语义网络图用什么软件绘制_GitMind:免费在线思维导图软件
  14. mate40怎么用鸿蒙系统,怎么使用鸿蒙系统?
  15. 雅诗兰黛公司发布2019会计年度企业责任报告,重点介绍公民责任和可持续发展目标进展
  16. 电机开环控制与闭环控制
  17. 仓库管理系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. 高德地图API调用和数据解析
  19. Java游戏用户登录注册_用java类模拟游戏的账号的登陆,注册,退出。 1.没有账号,需要注册。 2.注册完成后方可登...
  20. 计算机中什么是适配器及作用,什么是电脑适配器

热门文章

  1. 《掌门1对1微服务体系 Solar | 阿里巴巴 Sentinel 落地实践》
  2. 一文纵览自然语言生成的发展
  3. 开源工具Arena,数据科学家再也不用为Kubernetes犯难啦!
  4. 2017双11技术揭秘—阿里巴巴数据库技术架构演进
  5. 云原生与AI时代的存储该是什么样?新华三发布全NVMe智能闪存与智慧中枢数据平台
  6. 重磅!Python又第一了!网友:为什么找不到好工作?真相让人脸红…
  7. 强推!2019年最火的容器、K8S和DevOps入门都在这了
  8. 一部刷爆朋友圈的5G短片,看完才知道5G多暖多重要!
  9. dos系统重启计算机名,dos系统重启的命令是是
  10. oracle 如何迁移到 mysql_怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL...