【问题标题】:WebViewDidFinishLoad executes after window.onloadWebViewDidFinishLoad 在 window.onload 之后执行
【发布时间】:2018-08-04 23:35:22
【问题描述】:

JS代码window.onload后的iOS代码webViewDidFinishLoad

在 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 执行太晚了?

在执行window.onload 之前,我可以做些什么来设置enterplorer_home

【问题讨论】:

    标签: javascript ios objective-c javascriptcore


    【解决方案1】:

    我不知道你到底在做什么,但一种解决方案是包装一个 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);
            }
        })()
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 1970-01-01
      • 2011-08-22
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      相关资源
      最近更新 更多