iOS 8 WebViewがクライアントを呼び出せないという問題を解決
1142 ワード
Webページを参照するためにWebViewをクライアントに埋め込むのはよくあります.現在のプロジェクトではphonegapは使用されず、iframe伝達パラメータを自分で書いた(原理はphonegapと似ている).
iOS 5-7は正常に呼び出すことができるコードです.
しかしiOS 8にアップグレードした後、突然開かなくなった.Obj-Cレイヤはこのbar://リクエストをブロックしていません.
後で調べたところ、bar://このURIはURLコードがないからです.解決策はencodeURIComponent JSONパラメータでよく、中国語の伝送も保証できます.
以下の例を示します.
Apple側が何かセキュリティホールを塞ぐためにURLコードを要求したとみられる.
iOS 5-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>
しかしiOS 8にアップグレードした後、突然開かなくなった.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コードを要求したとみられる.