// // SPWebViewController.swift // Thimra // // Created by 曾觉新 on 2025/4/14. // import UIKit import WebKit class SPWebViewController: SPViewController { var urlStr: String? private lazy var webView: SPWebView = { let controller = WKUserContentController() let config = WKWebViewConfiguration() config.userContentController = controller config.preferences.javaScriptEnabled = true /** 默认是不能通过JS自动打开窗口的,必须通过用户交互才能打开 */ config.preferences.javaScriptCanOpenWindowsAutomatically = true let webView = SPWebView(frame: self.view.bounds, configuration: config) webView.delegate = self return webView }() override func viewDidLoad() { super.viewDidLoad() // self.edgesForExtendedLayout = .top configNavigationBack() _setupUI() if let url = urlStr { self.load(urlString: url) } } override func setBgImageView() { self.view.backgroundColor = .backgroundColor() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(false, animated: true) self.setNavigationNormalStyle() } func load(urlString: String) { // guard let url = URL(string: "https://www.baidu.com") else { return } var str: String = urlString // if let userToken = ETLoginManager.manager.userInfo?.userToken { // if urlString.contains("?") { // str = urlString + "&userToken=\(userToken)" // } else { // str = urlString + "?userToken=\(userToken)" // } // } guard let url = URL(string: str) else { return } var request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 30) // if ETLoginManager.manager.isLogin, let userToken = ETLoginManager.manager.userInfo?.userToken { // request.setValue(userToken, forHTTPHeaderField: "userToken") // } self.webView.load(request) } } extension SPWebViewController { private func _setupUI() { self.view.addSubview(webView) self.webView.frame = self.view.bounds self.webView.autoresizingMask = [.flexibleWidth, .flexibleHeight] } } //MARK: -------------- ETWebViewDelegate -------------- extension SPWebViewController: SPWebViewDelegate { func webView(webView: SPWebView, didChangeTitle title: String) { self.title = title } func webView(_ webView: SPWebView, didFailLoadWithError error: any Error) { spLog(message: error) } func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { _webViewUserContentController(didReceive: message) } }