在window.onload之后执行WebViewDidFinishLoad

时间:2018-08-04 23:35:23

标签: javascript ios objective-c javascriptcore

iOS代码webViewDidFinishLoad在JS代码window.onload之后

在iOS中,webViewDidFinishLoad委托

我愿意

self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

     self.jsContext[@"enterplorer_home"] = self;

在本地HTML webView中。我已经下载了HTML。

window.onload = function(){
         ....
        var userInfo = enterplorer_home.getInfo()?JSON.parse(enterplorer_home.getInfo()):{};
         .....

}

我在Safari控制台中进行了调试。

一个错误告诉我:

  

ReferenceError:找不到变量:enterplorer_home

为什么iOS webViewDidFinishLoad执行得太晚了?

如何执行enterplorer_home之前设置window.onload

1 个答案:

答案 0 :(得分:0)

我不知道您正在做什么,但是一种解决方案是包装requestAnimationFrame并在其中执行onload内的操作:

window.onload = function(){
    (function execute(){
        if (window.enterplorer_home) {
            ....
            var userInfo = enterplorer_home.getInfo()?JSON.parse(enterplorer_home.getInfo()):{};
            .....
        } else {
            window.requestAnimationFrame(execute);
        }
    })()
}