iOS UIWebView + JS交互 总结

31 篇文章 0 订阅

 //联系人:石虎  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();



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值