1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| // 1. 定义一个函数 zzgetCookie=(obj,cb)=>{ // 2. 这里可以先定义一些非native操作 document.cookie = ""; // 3. 给cb起一个名字并 挂载 到window上 let callbackName = `zzcb-${Math.random()*1000}`; window[callbackName] = cb; // 4. 创建一个对象来存放发送给native的数据 let obj = { method: 'getCookie', params: obj, callbackName: 'zzcb-2343' // -后边为随机数 } // 5. 将obj发送给客户端,IOS和Andr有不同的伪协议名,定义好就可以 let iframe = document.createElement('iframe'); iframe.style.width = '1px'; iframe.style.height = '1px'; iframe.style.display = 'none'; iframe.src = `zznative://zhuanzhuan.hybrid.ios/?infos=${encodeURIComponent(JSON.stringify(obj))}`; // 6. 客户端通过传来的参数就可以找到window上的cb函数了并执行 // 7.可以在客户端执行完cb之后进行回调删除window[callbackName] }
|