gpt4 book ai didi

WKWebview 不会在不添加父 View 的情况下运行 javascript(XML HTTP 请求)

转载 作者:行者123 更新时间:2023-12-04 03:11:24 24 4
gpt4 key购买 nike

我正在将我的项目从 UIWebView 更新为 WKWebView。在现有的 UIWebView 方法中,UIWebView 在运行 javascript 之前没有任何父级,并且一旦它有内容,它就会向 webview 添加一个父级。使用 UIWebView 可以很好地呈现内容。我对 WKWebView 使用相同的方法,但是 WKWebview 在加载时卡住了。有什么方法可以在 wkwebview 上执行 javascript 而无需向 webview 添加父级。另一个有趣的事情是它适用于模拟器而不是设备。使用 localHTTPServer 来提供 html、css 和图像。

解决上述问题的任何建议或提示。

最佳答案

我在运行 socket.io 的应用程序中观察到了类似的行为在 headless WKWebView 中。在我的情况下,网络套接字会一直断开连接而不会重新连接。

似乎由于 WKWebView 在进程外运行 javascript,它将暂停任何被认为空闲的 javascript 以节省资源(<-IMO)。空闲包括没有 parent 或应用程序/设备处于非事件状态。所以,是的,您似乎是正确的,因为在大多数情况下它需要父 View 。我能够使用以下代码解决此问题:

WKWebViewConfiguration* webViewConfig = // set up config

// provide empty frame rect
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:webViewConfig];

// add to keyWindow to ensure it is 'active'
[UIApplication.sharedApplication.keyWindow addSubview:webView];

这种方法至少可以确保 javascript 在应用程序处于事件状态时运行并且不会影响 UI。如果您需要稍后显示它,您可以在渲染和重置框架后从 keyWindow 中删除 webView。而且,是的,我还观察到在模拟器中这不是问题(javascript 始终运行,无论父级或应用程序状态如何)

希望这可以帮助!

关于WKWebview 不会在不添加父 View 的情况下运行 javascript(XML HTTP 请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com