首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS10 WKWebview - evaluateJavaScript("document.height")返回nil

iOS10 WKWebView是苹果公司在iOS10版本中引入的一种用于展示网页内容的控件。evaluateJavaScript("document.height")是WKWebView提供的一个方法,用于执行JavaScript代码并返回结果。

在iOS10中,当使用evaluateJavaScript("document.height")来获取网页的高度时,有可能会返回nil。这是因为在WKWebView中,网页的高度需要等到网页加载完成后才能确定,而在evaluateJavaScript方法执行时,有可能网页还未完全加载完成,导致获取的高度为nil。

为了解决这个问题,可以通过监听WKWebView的加载状态来确保网页加载完成后再执行evaluateJavaScript方法。可以使用WKNavigationDelegate中的webView(_:didFinish:)方法来监听网页加载完成的事件,然后在该方法中执行evaluateJavaScript("document.height")来获取网页的高度。

以下是一个示例代码:

代码语言:txt
复制
import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let configuration = WKWebViewConfiguration()
        webView = WKWebView(frame: view.bounds, configuration: configuration)
        webView.navigationDelegate = self
        view.addSubview(webView)
        
        let url = URL(string: "https://www.example.com")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
    
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        webView.evaluateJavaScript("document.height") { (result, error) in
            if let height = result as? CGFloat {
                print("网页高度:\(height)")
            } else {
                print("无法获取网页高度")
            }
        }
    }
}

在上述代码中,我们创建了一个WKWebView,并设置其navigationDelegate为当前的ViewController。在viewDidLoad方法中,我们加载了一个网页,并在网页加载完成后执行evaluateJavaScript方法来获取网页的高度。在evaluateJavaScript的回调闭包中,我们判断返回的结果是否为CGFloat类型,如果是则打印出网页的高度,否则打印出无法获取网页高度的提示。

推荐的腾讯云相关产品:腾讯云移动浏览器网页开发服务(https://cloud.tencent.com/product/wkwebview)。

请注意,以上答案仅供参考,具体实现方式可能因具体情况而异,需要根据实际需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券