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