解决 iOS 8 WebView 不能呼叫客户端的问题

简介: 在客户端中嵌入一个 WebView 来引用网页非常常见。当前项目没有使用 phonegap,而是自己写了个 iframe 传递参数(原理与 phonegap 类似)。如下代码,iOS5-7 是可以正常调用function foo(){ document.querySelector('iframe').src='bar://foo?json=' + JSON.stringify({a:1,b:'2'});}foo 但是升级到 iOS8 之后,却忽然打不开了。

在客户端中嵌入一个 WebView 来引用网页非常常见。当前项目没有使用 phonegap,而是自己写了个 iframe 传递参数(原理与 phonegap 类似)。

如下代码,iOS5-7 是可以正常调用

<iframe src="http://qq.com" style="width:200px;"></iframe>

<script>
function foo(){
	document.querySelector('iframe').src='bar://foo?json=' + JSON.stringify({a:1,b:'2'});
}

</script>
<br />
<br />
<br />
<a href="javascript:foo();">foo</a>

但是升级到 iOS8 之后,却忽然打不开了。Obj-C 层并没有拦截这个 bar:// 请求。

后来经过排查,是 bar:// 这段 URI 没有 URL 编码的缘故。解决办法是 encodeURIComponent JSON 参数即可,还可以保证 中文 的传输。

如下例子。

<iframe src="http://qq.com" style="width:200px;"></iframe>

<script>
function foo(){
	document.querySelector('iframe').src='bar://foo?json=' + encodeURIComponent(JSON.stringify({a:1,b:'2'}));
}

</script>
<br />
<br />
<br />
<a href="javascript:foo();">foo</a>

估计是 Apple 方面为了堵住什么安全漏洞所以要求 URL 编码的。

目录
相关文章
|
5月前
|
Linux Android开发 iOS开发
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
88 0
|
8月前
|
Android开发 iOS开发
iOS 替换WebView网页图片为本地图片
iOS 替换WebView网页图片为本地图片
201 0
|
Web App开发 Android开发 iOS开发
iOS 调试:通过 Safari/Chrome 调试 WebView
iOS 调试:通过 Safari/Chrome 调试 WebView
4091 0
iOS 调试:通过 Safari/Chrome 调试 WebView
|
8月前
|
API 开发工具 iOS开发
一点就通,社交源码IOS客户端开发集成SDK
所谓SDK,全称是SoftwaredevelopmentKit,翻译成软件开发工具包。SDK用助开发某种软件,今天给大家简单讲解下如何在社交源码IOS客户端上开发集成 SDK。
|
8月前
|
存储 网络安全 数据安全/隐私保护
iOS 逆向编程(八)远程拷贝 - 客户端(电脑)通过 ssh 拷贝文件到服务端(手机)
iOS 逆向编程(八)远程拷贝 - 客户端(电脑)通过 ssh 拷贝文件到服务端(手机)
98 0
|
8月前
|
存储 网络安全 数据安全/隐私保护
iOS 逆向编程(七)客户端(手机)免密认证登录
iOS 逆向编程(七)客户端(手机)免密认证登录
97 0
|
9月前
|
Android开发 iOS开发 Windows
无影产品动态|iOS & Android客户端6.0.0版本发布,提升触控灵敏度,操作体验更丝滑
无影ios & Android客户端6.0.0版本发布!移动端触控体验更舒适,用户操作更便捷,一起来看看!
678 0
无影产品动态|iOS & Android客户端6.0.0版本发布,提升触控灵敏度,操作体验更丝滑
|
Web App开发 弹性计算 Android开发
阿里云无影云桌面客户端下载Win/Mac/iOS/安卓/Web端均支持
阿里云无影客户端下载系统Win/Mac/iOS/安卓/Web端均支持
3555 0
阿里云无影云桌面客户端下载Win/Mac/iOS/安卓/Web端均支持
|
移动开发 Android开发 iOS开发
iOS WebView长按网页里的图片识别图片中的二维码和保存图片
iOS WebView长按网页里的图片识别图片中的二维码和保存图片
iOS WebView长按网页里的图片识别图片中的二维码和保存图片
|
iOS开发
iOS 开发-教大家如何使用github客户端上传自己的代码到github网站
iOS 开发-教大家如何使用github客户端上传自己的代码到github网站
150 0
iOS 开发-教大家如何使用github客户端上传自己的代码到github网站