我在一个简单的 ios 13 应用程序中使用 WKWebView。我希望能够根据用户与我的应用程序的交互打开另一个网址。
这是我的 ViewController 中的代码
var url:String = "https://example.com";
override func viewDidLoad() {
let notificationName = Notification.Name("updateWebView")
updateWebView()
}
@objc func updateWebView() {
guard let url = URL(string: url) else {
print("Invalid URL")
return
}
let request = URLRequest(url: url)
newWebView.load(request)
}
我已经在 sceneDelegate 代码中设置了更新 View Controller 中的 url,看起来像这样:
let yourViewController = self.window?.rootViewController as? ViewController
yourViewController?.passData(newUrl)
我可以看到调试器在 viewController 类中更新了 url 字符串。但是当它运行以下代码块时:
func passData(_ data : String?) {
self.data = data
guard let url = URL(string: url) else {
print("Invalid URL")
return
}
let request = URLRequest(url: url)
newWebView.load(request)
}
控制台记录以下消息:
2019-10-15 20:33:28.886512+0100 SamplerApp[59216:7409192] [ProcessSuspension] 0x600000c936c0 - WKProcessAssertionBackgroundTaskManager: Ignored request to start a new background task because the application is already in the background
我希望这会在我的应用程序中的 WKWebView 中加载新网址,但代码似乎没有执行任何操作,只是记录消息
最佳答案
您所要做的就是执行WKWebView.evaluateJavaScript()
。
webView.evaluateJavaScript("window.location = 'https://www.google.com';", completionHandler: nil)
它的作用是通过 JavaScript 而不是 Swift。它“欺骗”Swift 认为该网页想要访问不同的 URL。
请务必将 webView
替换为您自己的 WKWebView
和 https://www.google.com对于您想要将用户重定向到的任何网站。
关于ios - 初始加载后是否可以将新网址重新加载到 WKWebView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401763/