//联系人:石虎 QQ: 1224614774昵称:嗡嘛呢叭咪哄
1. HTML大体结构演示
================================================================================
<html>
<head>
<!-- 头部内容,定义字符集,标题,关键字,样式表,脚本函数等 -->
<!-- 方便浏览器显示,搜索引擎收录,以及执行函数与服务器交互等 -->
</head>
<body>
<!-- 正文部分,以下列列举了一些常见标签 -->
<!-- 文字连接 -->
<a href="跳转的URL">跳转的描述文字</a>
<!-- 图片 -->
<img src="图片资源URL" width="100" height="100" />
<!-- 文字段落 -->
<p>文字段落</p>
<!-- 回车换行 -->
<br />
<!-- 标题 -->
<h1>标题1</h1>
<h2>标题1</h2>
<h3>标题1</h3>
<!-- 区块 -->
<div></div>
<!-- 列表 -->
<ul>
<li>列表1</li>
<li>列表2</li>
<li>列表3</li>
</ul>
<!-- 表单,专门用来和用户交互的 -->
<form>...</form>
</body>
</html>
参考网站:http://www.w3cschool.cn
2. UIWebView + JS交互(了解)
================================================================================
1> 在页面加载完成方法中直接执行js
* document.title显示html标题
* clickme();调用html中已经存在的函数
2> 利用自定义协议调用OC内置方法
// 获得URL完整路径
NSLog(@"%@", request.URL.absoluteString);
#define kCustomProtocol @"ocfunc://"
NSString *urlStr = request.URL.absoluteString;
if ([urlStr hasPrefix:kCustomProtocal]) {
NSLog(@"自定义协议");
// 去掉协议头
urlStr = [urlStr substringFromIndex:kCustomProtocal.length];
NSLog(@"%@", urlStr);
// 拆分字符串
NSArray *array = [urlStr componentsSeparatedByString:@"/"];
NSLog(@"%@", array);
// 生成方法名字符串
NSString *funcName = [array[0] stringByAppendingString:@":"];
NSLog(@"%@ - %@", funcName, array[1]);
// 调用方法
SEL func = NSSelectorFromString(funcName);
[self performSelector:func withObject:array[1]];
returnNO;
}
*** 小结:HTML页面调用OC方法
在html中自定义协议
<a href="自定义协议头://OC的方法名/方法调用的参数">提示信息</a>
在OC的程序加载请求时:
(1)判断是否是自定义协议
(2)如果是自定义协议,就拆分url中的字符串,获得方法名和参数
(3) 利用
[self performSelector:SEL withObject:参数];
可以直接调用OC内部的方法
*** 细节处理
(1)参数判断以及是否实现方法处理
if (array.count != 2)return NO;
if ([self respondsToSelector:func]) { }
(2)中文取消百分号转义
// 取消URL中的百分号转义
msg = [msg stringByRemovingPercentEncoding];
(3)编译警告错误的处理,请参见"performSelector笔记"
3> JS注入
* 从服务器加载完成HTML之后,先利用stringByEvaluatingJavaScriptFromString方法向本地的html中动态添加一段javascript代码
* 添加的javascript代码中有一个函数,再次利用stringByEvaluatingJavaScriptFromString方法调用这个函数,想服务器发送新的请求
JS注入的目的:通过程序模仿用户在页面上的操作!发起于脚本黑客,后来常用于页游的外挂!
控制台指令:
// 获取html页面中名称为"word"的输入框
field = document.getElementsByName("word")[0];
// 将输入框的内容修改为iPhone
field.value = 'iPhone';
// 提交html表单查询
document.forms[0].submit();