繁体   English   中英

如何重新加载 WKWebView?

[英]How to reload WKWebView?

我的服务器上有一个html文档。 我在我的 webview 中从该文档加载文本。但是当我在我的服务器中更改html文档中的文本时。 我的 webview 没有更新新文本。 只有当我用 webview 加载我的视图 controller 时,我才需要更新我的 webview。我为此使用此代码,但我的 webview 没有更新:

import UIKit
import WebKit

class WayViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        if let url = URL(string: "\(waysURL)") {
            let urlRequest = URLRequest(url: url)
            webView.load(urlRequest)
        }
                
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        webView.reload() 
    }
}

问题是如果我关闭应用程序。 然后我更新了服务器上的文本。 回到应用程序,我在 webview 中的文本没有更新。

问题是您需要 reloadFromOrigin 来获取远程更改。 您还需要设置 url 请求缓存策略。 默认策略是useProtocolCachePolicy

“如果请求的缓存响应不存在,URL 加载系统将从原始源获取数据。”

因此,如果数据已经存在(这是您的情况),它不会再次从远程获取。

您需要的是忽略本地缓存数据设置 url request to reloadIgnoringLocalCacheData

“此策略指定不应使用现有缓存数据来满足 URL 加载请求。”


import UIKit
import WebKit

class WayViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        if let url = URL(string: "\(waysURL)") {
            let urlRequest: URLRequest = .init(
                url: URL,
                cachePolicy: URLRequest.CachePolicy = .reloadIgnoringLocalCacheData
            )
            webView.load(urlRequest)
        }    
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        webView.reloadFromOrigin() 
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM