Xcode WKWebView код, позволяющий WebView обрабатывать всплывающие окна - PullRequest
0 голосов
/ 25 октября 2018

Я совершенно новичок в Xcode, и синтаксис полностью ускользает от меня.

Мне осталось сделать одну вещь, а затем я достиг того, что мне нужно в Xcode.

Мне нужно вставить функцию, которая позволяет WebView обрабатывать всплывающие окна, но у меня нетИдея с чего начать вставку кода.

Это текущий код:

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        let webView = WKWebView()
        let htmlPath = Bundle.main.path(forResource: "index", ofType: "html")
        let folderPath = Bundle.main.bundlePath
        let baseUrl = URL(fileURLWithPath: folderPath, isDirectory: true)
        do {
            let htmlString = try NSString(contentsOfFile: htmlPath!, encoding: String.Encoding.utf8.rawValue)
            webView.loadHTMLString(htmlString as String, baseURL: baseUrl)
        } catch {
            // catch error
        }
        webView.navigationDelegate = self
        view = webView
    }
}

Как мне отредактировать это, чтобы разрешить всплывающие окна?

Пожалуйста, помните, что я не знаю, как добавить решения, которые я нахожу, поэтому, пожалуйста, покажите мне, куда вставить фрагмент.

1 Ответ

0 голосов
/ 25 октября 2018

Попробуйте этот код, надеюсь, он поможет!

class ViewController: UIViewController {
var webView: WKWebView!
var popupWebView: WKWebView?
var urlPath: String = "WEBSITE_URL"

override func viewDidLoad() {
    super.viewDidLoad()
    setupWebView()
    loadWebView()
}
//MARK: Setting up webView
func setupWebView() {
    let preferences = WKPreferences()
    preferences.javaScriptEnabled = true
    preferences.javaScriptCanOpenWindowsAutomatically = true

    let configuration = WKWebViewConfiguration()
    configuration.preferences = preferences

    webView = WKWebView(frame: view.bounds, configuration: configuration)
    webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    webView.uiDelegate = self
    webView.navigationDelegate = self

    view.addSubview(webView)
}

func loadWebView() {
    if let url = URL(string: urlPath) {
        let urlRequest = URLRequest(url: url)
        webView.load(urlRequest)
    }
}

}

extension ViewController: WKUIDelegate {
//MARK: Creating new webView for popup
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
    popupWebView = WKWebView(frame: view.bounds, configuration: configuration)
    popupWebView!.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    popupWebView!.navigationDelegate = self
    popupWebView!.uiDelegate = self
    view.addSubview(popupWebView!)
    return popupWebView!
}
//MARK: To close popup
func webViewDidClose(_ webView: WKWebView) {
    if webView == popupWebView {
        popupWebView?.removeFromSuperview()
        popupWebView = nil
    }
}
}
}
...