Closed CXTretar closed 6 years ago
@CXTretar
推荐一个比较trick的方法- (void)webView:(id)arg1 didReceiveTitle:(id)arg2 forFrame:(id)arg3;
,该方法会在得到title
的时候回调, 由于title
是在<head>
标签里,所以可以在这个时候提前注入你想要的JS
代码,不过需要注意的是,并不是所有网站都有这个标签,不过几乎所有的都有,你可以在webViewDidFinishLoad
里做一些补充。
如果你使用WKWebView
的话,就比较简单了,提供了公开的API
,可以将脚本设置为WKUserScriptInjectionTimeAtDocumentStart
加载。
好的,我尝试一下在这里注入JS
@zhongwuzw
- (void)webView:(id)arg1 didReceiveTitle:(id)arg2 forFrame:(id)arg3;
好像是可以的,这个方法是私有Api吧,只能通过 runtime去调用的是吧,这个会影响上架么?
@CXTretar
可以参考一下我的这个实现,需要注意的是WEB_GOT_TITLE
这个宏,我是直接拼好了SEL
,为了规避上架的风险,建议使用拼串的方式,这样应该是没问题的.
好的,已经帮了我很大忙了,感谢!
我尝试使用在
- (void)webViewDidFinishLoad:(UIWebView *)webView;
中注入JS代码修改网页CSS样式,但是这样会导致先加载原网页在加载新样式,反差有点大,有其他的方案么?