【问题标题】:Upload file using input type=file with WKWebView does not open file dialog使用 WKWebView 的输入类型 = 文件上传文件不会打开文件对话框
【发布时间】:2020-06-05 14:55:30
【问题描述】:

我正在使用 Xcode 11.5 并在 WKWebView 中加载网页。我将文件访问权限设置为只读,这是我的应用功能列表。

这就是我的loadView 的样子

    override func loadView() {
        //Inject JS string to read console.logs for debugging
        let configuration = WKWebViewConfiguration()
        let action = "var originalCL = console.log; console.log = function(msg){ originalCL(msg); window.webkit.messageHandlers.iosListener.postMessage(msg); }" //Run original console.log function + print it in Xcode console
        let script = WKUserScript(source: action, injectionTime: .atDocumentStart, forMainFrameOnly: false) //Inject script at the start of the document
        configuration.userContentController.addUserScript(script)
        configuration.userContentController.add(self, name: "iosListener")

        //Initialize WKWebView
        webView = WebView(frame: (NSScreen.main?.frame)!, configuration: configuration)

        //Set delegates and load view in the window
        webView.navigationDelegate = self
        webView.uiDelegate = self
        view = webView
    }

当我在 iOS 上使用 Safari 并选择输入类型 = 文件时,对话框打开,但使用我的 macOS 应用程序使用 web 视图时它不起作用?我需要在我的应用程序上设置更多功能吗?我发现了一些文件输入的老问题,但它们似乎已经解决了?

【问题讨论】:

标签: swift xcode macos progressive-web-apps


【解决方案1】:

像这样实现了 UIDelegate。

func webView(_ webView: WKWebView, runOpenPanelWith parameters: WKOpenPanelParameters, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping ([URL]?) -> Void) {
    let openPanel = NSOpenPanel()
    openPanel.canChooseFiles = true
    openPanel.begin { (result) in
        if result == NSApplication.ModalResponse.OK {
            if let url = openPanel.url {
                completionHandler([url])
            }
        } else if result == NSApplication.ModalResponse.cancel {
            completionHandler(nil)
        }
    }
}

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 2019-06-21
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多