为什么WKWebView无法运行processingjs脚本?

时间:2017-05-19 13:12:09

标签: javascript ios uiwebview wkwebview processing.js

我需要在iOS的webview中运行一些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)
    }
  • 处理动画仅在UIWebView中运行,但在WKWebView中不运行;页面本身(画布以外的元素)使用WK正确呈现,但画布为空白。
  • 我在iOS 10.3,iOS 8上试过这个。
  • 我想也许我需要以某种方式配置WKWebView。但是在文档中没有找到这样的配置选项。

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

与此问题相关:我应该如何在iOS中的webview中调试javascript(类似桌面Chrome中的控制台)?

1 个答案:

答案 0 :(得分:1)

我至少可以肯定回答调试方面(并指出一般情况下它可能失败的原因)。

可以在您的(macOS)Safari中完成调试。激活开发人员菜单(设置 - 高级 - "在菜单栏中显示开发菜单")。在所述菜单中,一旦您的应用程序运行(在模拟器或连接的设备上),您可以选择您的设备/模拟器,然后连接到您的应用程序(或者更确切地说是webview)。

通常,问题可能是文件权限甚至是ATS问题。如果我找到你,你就可以从本地文件中构建你的请求了。这可能会影响它的处理方式,但我承认我不确定。 WKWebView在这方面更为严格。您可能还希望确保标准配置使用的WKPreferences对象满足您的需求。它有几个关于Java和JS的属性(默认情况下通常允许使用JS,但它不能打开窗口)。 哦,我假设你没有在设备/模拟器的设置应用程序中停用JS?