WebViewDidFinishLoad 在 window.onload 之后执行

Posted

技术标签:

【中文标题】WebViewDidFinishLoad 在 window.onload 之后执行【英文标题】:WebViewDidFinishLoad executes after 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

【问题讨论】:

【参考方案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);
        
    )()

【讨论】:

以上是关于WebViewDidFinishLoad 在 window.onload 之后执行的主要内容,如果未能解决你的问题,请参考以下文章

phonegap - webViewDidFinishLoad 没有被调用

如何将 deviceToken 字符串传递给“webViewDidFinishLoad”?

无法让 webViewDidStartLoad 和 webViewDidFinishLoad 正常工作

UIWebViewDelegate:页面内导航期间未调用 webViewDidFinishLoad

无论如何确定 webViewDidFinishLoad: 之外的 UIWebView 的高度吗?

当 UIWebView 打开 PDF 时 webViewDidFinishLoad 未触发