为什么 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)
}
- UIWebView处理动画只有运行s,WKWebView不处理;页面本身(canvas 以外的元素)使用 WK 正确呈现,但 canvas 为空白。
- 我已经在 iOS 10.3、iOS 8 上试过了。
- 我想也许我需要以某种方式配置 WKWebView。但是在文档中没有找到这样的配置选项。
这里有人注意到同样的问题吗?
与这个问题相关:我应该如何在 iOS 的网络视图中调试 javascript(类似于桌面 Chrome 中的控制台)?
我至少可以肯定地回答调试方面的问题(并给出一般情况下为什么会失败的指示)。
可以在 (macOS) Safari 中进行调试。激活开发者菜单(设置 - 高级 - "Show Develop menu in menu bar")。在所述菜单中,一旦您的应用程序运行(在模拟器中或连接的设备上),您可以 select 您的 device/simulator 然后连接到您的应用程序(或者更确切地说是网络视图)。
一般来说,问题可能是文件权限问题,甚至是 ATS 问题。如果我没听错,你就是从本地文件构建你的请求。这可能会影响它的治疗方式,但我承认我不确定。 WKWebView
在这方面更严格。您可能还想确保标准配置使用的 WKPreferences
对象满足您的需要。它有几个关于Java和JS的属性(JS一般默认是允许的,但是打不开windows,比如)。
哦,我假设您没有在 device/Simulator?
的“设置”应用中停用 JS
我需要在 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)
}
- UIWebView处理动画只有运行s,WKWebView不处理;页面本身(canvas 以外的元素)使用 WK 正确呈现,但 canvas 为空白。
- 我已经在 iOS 10.3、iOS 8 上试过了。
- 我想也许我需要以某种方式配置 WKWebView。但是在文档中没有找到这样的配置选项。
这里有人注意到同样的问题吗?
与这个问题相关:我应该如何在 iOS 的网络视图中调试 javascript(类似于桌面 Chrome 中的控制台)?
我至少可以肯定地回答调试方面的问题(并给出一般情况下为什么会失败的指示)。
可以在 (macOS) Safari 中进行调试。激活开发者菜单(设置 - 高级 - "Show Develop menu in menu bar")。在所述菜单中,一旦您的应用程序运行(在模拟器中或连接的设备上),您可以 select 您的 device/simulator 然后连接到您的应用程序(或者更确切地说是网络视图)。
一般来说,问题可能是文件权限问题,甚至是 ATS 问题。如果我没听错,你就是从本地文件构建你的请求。这可能会影响它的治疗方式,但我承认我不确定。 WKWebView
在这方面更严格。您可能还想确保标准配置使用的 WKPreferences
对象满足您的需要。它有几个关于Java和JS的属性(JS一般默认是允许的,但是打不开windows,比如)。
哦,我假设您没有在 device/Simulator?