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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios 一直是正在等待审核_iOS开发者账号被调查了,相关问题整理

今年以来因为审核的加严&#xff0c;很多iOS开发者账号提交ipa上架审核&#xff0c;直接反馈账号被调查了&#xff0c;也没有具体APP原因。反馈邮件翻译Hello,We are unable to continue this app’s review because your Apple Developer Program account is currently under …

html boot设置列宽,html - Bootstrap 4:设置列宽固定位置内容的宽度 - SO中文参考 - www.soinside.com...

我有一个基于Bootstrap 4的网页&#xff0c;其中包含1行&#xff0c;其中包含3列。我希望第一列和第三列具有固定位置&#xff0c;第二列可滚动。Alapus berihal aralori nog abosiman to lere sot. Tec rihew elicip eho ma gub? Atiyi fe emanoto urigifie cep corike? Ino…

品质主管每日工作需要做哪些_做微信社群运营需要用到哪些工具来铺助工作呢?...

对社群工作进行运营并不是人们想象的那般不需要风吹日晒&#xff0c;只需要待在房间里就能够轻松工作了。虽然这些工作人员不需要每天风吹日晒的&#xff0c;但是工作起来一点都不轻松&#xff0c;而且还非常的繁琐。其实对微信社群运营是需要采取一些辅助工具来帮忙的&#xf…

python下标从0开始_从零学Python之入门(三)序列

sequence 序列sequence(序列)是一组有顺序的元素的集合(严格的说&#xff0c;是对象的集合&#xff0c;但鉴于我们还没有引入“对象”概念&#xff0c;暂时说元素)序列可以包含一个或多个元素&#xff0c;也可以没有任何元素。我们之前所说的基本数据类型&#xff0c;都可以作为…

更司马懿学管理计算机,跟司马懿学管理(一)无悔的选择是好选择

北京邮电大学教授 赵玉平经典语录:1) 生活中的许多痛苦都是选项太多造成的.2) 反常行为的背后必定隐藏着不可告人的动机.3) 最好是好的敌人.4) 没有百分之百的完美, 只有百分之百的错误;如果非要追求百分之百, 一定会得到一个错误.5) 对付高人使用高招, 对付俗人使用俗招.我们使…

蚂蚁森林快捷指令_iPhone「快捷指令」怎么玩?玩法太多,别让这个功能吃灰

自iOS 12.1.4 系统更新之后&#xff0c;苹果就增加了「快捷指令」这一功能。熟练使用这个功能的小伙伴&#xff0c;可以让平时的生活工作效率大大提升&#xff0c;将一系列复杂的流程变得简单化&#xff1b;对于不熟悉这个功能的小伙伴而言&#xff0c;它只藏在手机角落的一个小…

分享按钮 html代码,超简洁微博分享按钮代码

摘要由于本站实现了全站https&#xff0c;百度分享的js就失效了&#xff0c;虽然用的不多但总还是少了点什么。本来打算把百度分享的所有资源下载到我的服务器上调用&#xff0c;但转念一想我就用一个微博分享和百度分享啊&#xff0c;干嘛如此麻烦&#xff01;由于本站实现了全…

.rdlc 文件设置方向_在Word里面怎么设置把字竖着打出来?

如果是整篇的文字需要竖排&#xff0c;可以在菜单中依次打开【文件】-【页面设置】&#xff0c;找到【文字排列】设置为【垂直】。如果是部分竖排&#xff0c;则选中文字之后选择【插入】-【文本框】-【竖排】即可。操作步骤如下&#xff1a;1、整篇文档中的文字竖排&#xff1…

antd table排序会触发到分页怎么解决_多年管理系统开发经验总结~代码解决方案...

来源 | juejin.im/user/870468939940184 作者 | 前端小月月背景最近的你有没有接手的新项目&#xff0c;对这个有什么感觉&#xff1f;我最近接手了一个项目&#xff0c;先不论是否代码行数的多少&#xff0c;仅是思路就很混乱&#xff0c;像是一件衣服在打补丁&#xff0c;而…

如何占用计算机内存,电脑内存占用太高怎么办 教你电脑内存不够用解决方法...

现在很多白领买电脑&#xff0c;都会优先考虑电脑的续航和便捷&#xff0c;因为他们买电脑主要也就办办公&#xff0c;看看电影&#xff0c;又不玩大型游戏&#xff0c;所以高性能对他们来说也没什么必要。笔记本电脑但现在市面上续航久&#xff0c;便携性比较高的Intel电脑&am…

3d怎么把两个面拼接在一起_vr全景看房用什么软件做的?3D看房是怎么拍摄的?...

以往“看房跑断腿”的时代在vr全景看房出现后就得到了很大的解决&#xff0c;如今疫情和“宅经济”的双重影响下&#xff0c;各行各业不得不寻求线上转型&#xff1b;而vr全景对于房地产等行业便是一个很好的转型方式。vr全景看房也被一些朋友称之为是3D看房和VR看房&#xff0…

武汉计算机应用中职学校,武汉市中职学校计算机应用基础课程抽考.Doc

武汉市中职学校计算机应用基础课程抽考(试卷编号&#xff1a;22&#xff0c;考试时间100分钟&#xff0c;满分100分)题号四五六总分得分评卷人得 \o "关于PowerPoint中对象的动画的描述中(  )是错误的。 _x0007_" .一、单项选择 (共20题&#xff0c;合计10分)下列选…

蓝牙小电池图标_提高MacBook电池寿命的15个技巧

苹果的MacBook系列以其电池寿命著称。它们的电池续航时间一般都很好&#xff0c;按照苹果公司的标准&#xff0c;所有型号的电池续航时间都保证为10小时。然而&#xff0c;这里有很多附加的条款和条件&#xff0c;如果你想延长你的MacBook Pro或MacBook Air的电池寿命&#xff…

html转word 时 字体颜色,【Web前端问题】文字大小和颜色随着热度改变如何做?...

回答&#xff1a;提供一个思路&#xff1a;可以根据热度设置一个倍率&#xff0c;然后字体大小和背景透明度根据倍率设置回答&#xff1a;使用websocket,热度变化时,数据自动改变回答&#xff1a;回答&#xff1a;我提供一个我自己写的小demo我猜楼主的问题是不知道如何把颜色亮…

android实现qq修改密码底部弹出框_易查分强大的“可修改列”功能:轻松实现填表、留言和信息核对...

考试成绩公布了&#xff0c;想征求家长和学生的意见吗&#xff1f;给查询加个留言吧&#xff1b;需要家长填写一些表格&#xff0c;还在用QQ和微信群一个人一个人的留言粘贴吗&#xff1f;公布一些资料&#xff0c;想让家长自己核对一下有没有错误&#xff0c;家长还要告诉老师…

计算机程序的建立命令,数控车床编程指令 编程由一系列的指令组成

原标题&#xff1a;数控车床编程指令 编程由一系列的指令组成引言&#xff1a;数控程序员为数控机器编写指令&#xff0c;其中计算机连接到加工设备&#xff0c;以及完整系统的电气驱动器和传感器。这台计算机控制加工设备轴的运动。文章将以数控车床为例&#xff0c;介绍数控车…

软件数控编程_这么多CNC数控编程软件, 你觉得哪个好?

随着科技技能&#xff0c;数控加工对零件的杂乱度、精度、工艺等有了更高的要求&#xff0c;普通的人工编程难以担任&#xff0c;所以CAM(计算机辅助制作)软件应运而生&#xff0c;它利用计算机来进行生产设备办理控制和操作的进程。它输入信息是零件的工艺道路和工序内容&…

计算机图形学学习报告,计算机图形学学习报告.doc

计算机图形学学习报告篇一&#xff1a;计算机图形学学习心得体会计算机图形学学习心得体会计算机科学与技术与技术 班学号&#xff1a;1.计算机图形学计算机图形学(Computer Graphics&#xff0c;简称CG)&#xff0c;狭义上是一种研究基于物理定律、经验方法以及认知原理&#…

11 为了进一步_浅聊小米11发布会

到现在小米11的发布会也终于是结束了&#xff0c;小米11也带来了不少的惊喜下面一起来看看吧。处理器全球首发骁龙888处理器&#xff0c;骁龙作为安卓阵营的老大每一年的旗舰处理器都是十分值得期待的。按照惯例每一年的骁龙最新旗舰都会由三星首发&#xff0c;而这次小米11能够…

计算机雕刻教学设计,教学设计季花的雕刻方法.doc

食品雕刻的实例——直刻月季花的雕刻方法教学时间2010-12教学班级10 级烹饪( 1)(2) (3) 班学习目标&#xff1a;1、学习用直刻的方法雕刻月季花1、 知识目标2、教授学生掌握正确的用刀方法2、 能力目标3、要求学生在基本功方面加大练习力度3、 素养目标4、在教学中贯穿互相帮助…