swift - MacOS 中的 WkWebView 在本地或远程内容上保持空白

标签 swift macos cocoa webkit wkwebview

我正在尝试构建一个 MacOS 应用程序,它可以加载网站并使用 WebView 从中提取数据,但我根本无法加载 WebView ,无论是远程内容还是本地内容。

我正在尝试使用嵌入到主视图中的非常小的 WebView 。 (最终,我实际上并不希望显示这个,或者我希望它尽可能小---我只是希望呈现的内容提取数据。)像这样:

screenshot of my storyboard

但是,无论是从远程 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 的“App Transport Security Settings”条目中添加了“Allow Arbitrary Loads”,所以 this prior SO不能解决问题。

我如何说服 WKWebView 实际上,你知道,显示一些东西? (MacOS 10.14.5、Swift 5、XCode 10.2.1)

最佳答案

Aaaah,我发现了问题:显然,即使您不打开沙箱,WKWebView 也完全没有它会失败。不仅如此,它还悄无声息地失败了。当我打开沙箱,然后启用传出连接时,一切都立即开始工作。

关于swift - MacOS 中的 WkWebView 在本地或远程内容上保持空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56484932/

相关文章:

swift - 类型别名必须声明为公共(public),因为它符合公共(public)协议(protocol)中的要求

iphone - 尝试取消归档多个对象时,NSKeyedUnarchiver 会卡住

iphone - AVAudioPlayer isPlaying 始终返回 null

objective-c - 简单的 NSImage 绘图无法按预期工作

json - 下载/解析后在 swift 中打印 json

objective-c - 如何在 Swift 中传递 Raw Json 来发布请求?

ios - 检测通话时长

java - 如何解决javax.servlet.ServletException : java. lang.UnsupportedClassVersionError?

java - 在一台机器上运行服务器和客户端(netbeans 8.1)

objective-c - 如何制作一个可以接受字符串的宏?