karosLi / KKJSBridge

一站式解决 WKWebView 支持离线包,Ajax/Fetch 请求,表单请求和 Cookie 同步的问题 (基于 Ajax Hook,Fetch Hook 和 Cookie Hook)
MIT License
693 stars 120 forks source link

页面中iframe内页调用native方法之后,回调函数不执行 #63

Closed bullub closed 3 years ago

bullub commented 3 years ago

问题描述:

  1. 外层页面上通过iframe嵌入内层页面,内层页面引入桥层脚本,并通过内层页面调用native方法,并传入回调;
  2. native执行函数之后,调用回调时,无法触发回调函数。

问题分析:

由于执行回调函数时,是通过webview当前上下文执行脚本触发的,但是iframe内页的上下文和外层页面的上下文是隔离的,可能也不同域,因此在外层页面上无法执行内层页面的脚本。而且如果有多个iframe内页的话,也不好标记该调用是哪个iframe发起的

如上,求一个可靠的解决方案。

备注:目前有一些多业务模块融合的情况,不同业务模块之间可能有相互引用的情况,而引用方式为了尽量减少对被接入方的改动需求,因此都采用iframe嵌入对方页面的方案。