xjinza
4/27/2018 - 2:48 AM

JS主動調用Native的方案

JS主動調用Native的方案

通信方案             | 版本支持          | 丟消息 | 支持同步返回 | 傳遞對象 | 注入原生對象 | 數據長度限制
---------------- | ------------- | --- | ------ | ---- | ------ | ------
假跳轉              | 全版本全平台        | 會丟失 | 不支持    | 不支持  | 不支持    | 有限制   
彈窗攔截             | UIWebView不支持  | 不丟失 | 不支持    | 不支持  | 不支持    | 無限制   
JSContext注入      | 只有UIWebView支持 | 不丟失 | 支持     | 支持   | 支持     | 無限制   
安卓interface注入    | 安卓全版本         | 不丟失 | 支持     | 支持   | 支持     | 無限制   
MessageHandler注入 | 只有WKWebView支持 | 不丟失 | 不支持    | 不支持  | 不支持    | 無限制   

假跳转的请求拦截-JS发起调用

JS其实有很多种方式发起假请求,跟发起一个新请求没啥两样,只要按着 协议约定 生成假请求地址,正常的发起跳转即可,任何一种方式都可以让客户端拦截住

A标签跳转
//在HTML中写上A标签直接填写假请求地址
<a href="wakaka://wahahalalala/action?param=paramobj">A标签A标签A标签A标签</a>
原地跳转
//在JS中用location.href跳转
location.href = 'wakaka://wahahalalala/action?param=paramobj'
iframe跳转
//在JS中创建一个iframe,然后插入dom之中进行跳转
$('body').append('<iframe src="' + 'wakaka://wahahalalala/action?param=paramobj' + '" style="display:none"></iframe>');

参考:http://awhisper.github.io/2018/01/02/hybrid-jscomunication/
参考:https://hk.saowen.com/a/0e345e816533375112196dab24ba42570486a344a637e10d13cfedebd020fb3d