dequan1331 / HybridPageKit

A high-performance、high-extensibility、easy integration framework for Hybrid content page. Support most content page types of News App.
MIT License
1.22k stars 184 forks source link

有两个框架相关的问题咨询一下 #41

Closed pcccccc closed 4 years ago

pcccccc commented 4 years ago

1、目前我们是通过一个本地html和js去展示页面。在页面load本地页面时调用初始化js对象的方法,在APP启动以后第一次加载是正常的,后续加载页面就不能正常展示内容。如果调用clearCache或者[[HPKPageManager sharedInstance] clearAllReusableWebViews];方法才能正常展示出来。请问是否有比较好的解决办法。 2、在APP第一次加载webview的时候很慢,请问是否可以在展示webview之前就提前加载。

dequan1331 commented 4 years ago

1.这个问题看现象是因为注入的JS回收之后有问题了,因为第一次注入之后,webview进行了回收,影响了你这里的JS。但是具体的问题需要debug看下第二次使用时,JS是否注入成功,是否是undefined以及不能显示正常内容的原因等等,这里需要针对具体的case进行解决。简单的做法就是每次在webview finishNavigation的时候,都注入一遍JS。 同时对于JS注入这里,可以创建一个自己的 WebView 继承自 HPKWebView。重写对应的initWithFrame方法。这样可以实现自定义的WKWebViewConfiguration逻辑,同时也不会影响框架内部的逻辑。同时在webview回收的对应protocol里,设置removeAllUserScripts。

  1. 这个问题基本业界的做法都是相同的,就是在支持复用的同时,为了解决首次的加载速度,预热一个。具体就是在app初始化的时候,先尝试取一个WebView,这个时候没有默认框架会创建一个,之后在回收掉进入回收池,就是先dequeueWebViewWithClass然后在enqueueWebView。这里要注意如果你需要设置UA等一些webview的特性,需要在这一步之前进行设置,防止这个webview带不上。