WKWebView不执行任何js代码

胡迪·伊尔费尔德

我正在使用渲染Xcode项目中的本地index.html文件WKWebView事实是,文件内的html和css代码已成功显示在webView内,但javaScript根本无法呈现。

我已经在stackoverflow上搜索了与此类似的问题,我想出的是Apple不在本地html文件中执行js,并且为了执行js,我必须使用本地网络服务器using GCDWebServer

坦白地说,我是空洞的webServer概念的新手,我发现很难弄清楚如何在本地webServer中运行html以及如何使用GCDWebServer

在WKWebView内的本地服务器上运行index.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!))
}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章