博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iOS】UIWebView HTML5 扩展
阅读量:6854 次
发布时间:2019-06-26

本文共 4437 字,大约阅读时间需要 14 分钟。

对于不少iOS开发人员来说,HTML5的内容比較陌生。

尤其是UIWebView类的 stringByEvaluatingJavaScriptFromString 方法

让非常多人认为又得学一种新的语言。

而这一部分也是项目中学生常问的问题之中的一个。

本文以Category(类目)的方式扩展了UIWebView类,将一些经常使用的JavaScript操作封装成UIWebView类方法。

最新源码下载地址:(持续维护)

原文首发地址:

头文件(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

转载地址:http://cyyyl.baihongyu.com/

你可能感兴趣的文章
eclipse 创建maven 项目 动态web工程完整示例
查看>>
laravel中的命名公约规范及relation N+1问题
查看>>
Convolution of measures and one application
查看>>
逆序对 线段树&树状数组 (重制版)
查看>>
从此错位(相减)无计算
查看>>
RESTful API 设计最佳实践
查看>>
想要成为一个人,先按那个人的要求去做,你自然就成了那个人(转)
查看>>
Codeforces Round #425 (Div. 2) - A
查看>>
mysql学习【第12篇】:数据库之视图,触发器,事务等
查看>>
hdu4982 Goffi and Squary Partition (DFS解法)
查看>>
Bash Shell 获取进程 PID
查看>>
RHEL7安装部署RabbitMQ
查看>>
关于站在移动物上的问题
查看>>
UVA 11205 The broken pedometer
查看>>
直击微软MIX11 聚焦IE10、Silverlight5、WP7
查看>>
MVC工作原理
查看>>
斐波那契数列Log(n)算法
查看>>
信息处理,分而治之-- ESFramework 使用技巧
查看>>
SQL Server 查询计划总结
查看>>
60幅精美绝伦的绘景(Matte Paintings)作品欣赏(下篇)
查看>>