WKWebView 不执行任何 js 代码



我正在使用WKWebView在我的 Xcode 项目中渲染一个本地索引.html文件。问题是,文件中的html和css代码在webView中成功显示,但是javaScript根本没有呈现。

我在stackoverflow上搜索了关于这个问题的类似问题,我想出的是Apple不会在本地html文件中执行js,并且为了执行js,我需要使用本地Web服务器使用GCDWebServer

老实说,我是孔网络服务器概念的新手,我发现很难弄清楚如何在本地网络服务器中运行html以及如何使用GCDWebServer

。在

WKWebView的本地服务器上运行我的索引.html文件以及如何执行此操作的简单方法

这是我的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    let resourceUrl = Bundle.main.url(forResource: "index", withExtension: "html")
    let urlRequest = URLRequest.init(url: resourceUrl!)
    webView.load(urlRequest)
    webView.allowsBackForwardNavigationGestures = true
}
这就是

我设法创建一个GCDWebServer本地服务器的方式,其中js文件使用html脚本标签成功渲染,并且不需要JS注入,例如WkUserscriptevaluateJavaScript

我的代码:

import UIKit
import WebKit
import GCDWebServer
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate{

var wkWebView: WKWebView!
var webServer = GCDWebServer()
var contentController = WKUserContentController()

func initWebServer() {
    let folderPath = Bundle.main.path(forResource: "www", ofType: nil)
    webServer.addGETHandler(forBasePath: "/", directoryPath: folderPath!, indexFilename: "index.html", cacheAge: 0, allowRangeRequests: true)
    webServer.start(withPort: 8080, bonjourName: "GCD Web Server")
}
public override func viewDidLoad() {
    super.viewDidLoad()
    initWebServer()
    let config = WKWebViewConfiguration()
    config.userContentController = contentController

    wkWebView = WKWebView(frame: view.bounds, configuration: config)
    wkWebView.scrollView.bounces = false
    wkWebView.uiDelegate = self
    wkWebView.navigationDelegate = self
    view.addSubview(wkWebView!)
    wkWebView.load(URLRequest(url: webServer.serverURL!))
}
}

相关内容

  • 没有找到相关文章

最新更新