swift - MacOS 中的 WkWebView 在本地或远程内容上保持空白
问题描述
我正在尝试构建一个 MacOS 应用程序,该应用程序可以使用 webviews 加载网站并从中提取数据,但我根本无法加载 webviews,无论是远程内容还是本地内容。
我正在尝试使用嵌入到主视图中的非常小的 webview。(最终,我实际上并不希望显示它,或者我希望它尽可能小——我只希望渲染的内容能够提取数据。)像这样:
但是,从远程 url 加载和从本地测试 html 字符串加载都不起作用。当我单击 load-from-remote-url 按钮或 load-from-local-test-string 按钮时,我放入其中以确保调用该函数的打印语句被打印出来,但根本没有任何变化webview:它只是一个空白的白框。它也不会引发任何类型的错误。
这是失败的代码:
webViewTools.swift:
import Foundation
import WebKit
extension WKWebView {
func load(_ urlString: String) {
guard let url = URL(string: urlString) else {
print("can't make url")
return
}
let request = URLRequest(url: url)
load(request)
}
}
let testHtml = "<html><body><h1>Hello World</h1></body></html>"
extension WKWebView {
func test(){
loadHTMLString(testHtml, baseURL: nil)
}
}
ViewController.swift:
import Cocoa
import WebKit
class ViewController: NSViewController {
@IBOutlet var webView: WKWebView!
@IBAction func loadButtonPressed(_ sender: Any) {
webView.load("https://www.apple.com/")
print("trying to load from remote")
}
@IBAction func linkButtonPressed(_ sender: Any) {
webView.test()
print("trying to load local string")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
注意:沙箱未启用,并且我在 info.plist 的“应用程序传输安全设置”条目中添加了“允许任意加载”,因此之前的 SO 无法解决问题。
我如何说服 WKWebView 实际上,你知道,显示一些东西?(MacOS 10.14.5、Swift 5、XCode 10.2.1)
解决方案
啊,我发现了问题:显然,即使您不打开沙箱,没有它 WKWebView 也会完全失败。不仅如此,它还在默默地失败。当我打开沙箱,然后启用传出连接时,一切都立即开始工作。
推荐阅读
- python - 如何有效地进行 rasa nlu、故事数据验证和更新?
- c - 检测运行时是否正在使用调试器
- kubernetes - 如何从 HA 集群和 etcd 集群中删除主节点
- python - 绘制按值分组的德莱尼三角剖分
- perl - 使用 `atom` 运行 perl 代码会抛出未定义的子例程 &main::send_request
- mysql - 具有限制冲突的光标分页
- python - sklearn 抛出 ValueError: bad input shape (600000, 24)
- swiftui - SwiftUI:onDelete 无法正确更新 UI
- python - 对于高索引值,numpy 数组中的索引很慢
- bluetooth-lowenergy - 如何从 HESTA 智能手环中提取温度值