我正在WKWebView中加载html的内容。我想按需更改已加载内容的样式,为此,我使用了WKWebView的评估JavaScript方法。我的问题是,当我尝试更改沉重的html样式时,需要一段时间才能在屏幕上呈现更改。我正在寻找可以在渲染完成时告诉我的信息,以便通过向用户发送消息来使用户了解UI中正在发生的事情。
我尝试使用window.setTimeout(function(){window.webkit.messageHandlers.FinishShowingLoading.postMessage('some message')},0)
和window.addEventListener('load',function(){window.webkit.messageHandlers.FinishShowingLoading.postMessage('some message')},0)
。
在这两种情况下,消息都是在渲染完成之前发送的,我似乎无法弄清楚问题出在哪里。
这是我的代码:
func js(){
let changeJS = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust = '200%'; window.webkit.messageHandlers.FinishShowingLoading.postMessage('some message')"
webView.evaluateJavaScript(changeJS) { (result, error) in
//do something
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "FinishShowingLoading" {
// do something
}}
非常感谢您的帮助。 预先感谢!