为什么 WKWebView 无法 运行 处理 js 脚本?

Why does WKWebView fails to run processingjs script?

我需要在 iOS 的网络视图中 运行 一些 processing.js 脚本(在本地资源中 html/js)。首先我尝试使用 UIWebView,然后我看到文档建议使用 WKWebView 以获得更好的性能。所以我写了下面的代码:

    if NSClassFromString("WKWebView") != nil {
        let webConfiguration = WKWebViewConfiguration()
        wkWebView = WKWebView(frame: self.view.bounds, configuration:webConfiguration)
        wkWebView!.scrollView.isScrollEnabled=false
        wkWebView!.uiDelegate = self
        self.view.addSubview(wkWebView!)
        wkWebView!.load(request)
    } else {
        uiWebView = UIWebView(frame: self.view.bounds)
        uiWebView!.scrollView.isScrollEnabled=false
        self.view.addSubview(uiWebView!)
        uiWebView!.loadRequest(request)
    }

这里有人注意到同样的问题吗?

与这个问题相关:我应该如何在 iOS 的网络视图中调试 javascript(类似于桌面 Chrome 中的控制台)?

我至少可以肯定地回答调试方面的问题(并给出一般情况下为什么会失败的指示)。

可以在 (macOS) Safari 中进行调试。激活开发者菜单(设置 - 高级 - "Show Develop menu in menu bar")。在所述菜单中,一旦您的应用程序运行(在模拟器中或连接的设备上),您可以 select 您的 device/simulator 然后连接到您的应用程序(或者更确切地说是网络视图)。

一般来说,问题可能是文件权限问题,甚至是 ATS 问题。如果我没听错,你就是从本地文件构建你的请求。这可能会影响它的治疗方式,但我承认我不确定。 WKWebView 在这方面更严格。您可能还想确保标准配置使用的 WKPreferences 对象满足您的需要。它有几个关于Java和JS的属性(JS一般默认是允许的,但是打不开windows,比如)。 哦,我假设您没有在 device/Simulator?

的“设置”应用中停用 JS