在 cocoa/Mac 应用程序中,我使用 WebView 加载一系列 YouTube 视频 (5)。当它加载时,我的整个应用程序锁定了 5 秒左右。
有没有办法加载它,这样它就不会卡住应用程序的其余部分?
谢谢
例如:
[[webView mainFrame] loadHTMLString:html baseURL:[NSURL URLWithString:@"http://youtube.com"]];
最佳答案
不幸的是,除了在主线程上之外,您无法渲染 WebView。这是该类的基本限制。我将开始调查为什么您的页面需要这么长时间才能呈现。我的预感:Javascript 或者插件。
我通常喜欢先使用 Safari 来看看它是否有同样的问题。您可以将 HTML 文件拖到 Safari 上以轻松加载。如果 Safari 显示相同的问题,那么您可以使用 Safari 的开发工具来分析它。 (首选项、高级、在菜单栏中显示“开发”菜单。)
如果 Safari 没有问题,那实际上很好,因为这意味着你的问题肯定可以解决(如果 Safari 可以做到,你应该能够实现同样的目标)。以下是一些值得尝试的事情:
- 仪器。尝试看看 WebView 正在花时间做什么。首先关注主线程的“所有样本”。这通常是导致应用挂起的原因。
- 简化。尝试从 Web View 中删除某些内容,尤其是 JavaScript,直到找到导致问题的部分。
- 实现
WebResourceLoadDelegate
方法来查看哪一部分导致了问题。由此提供的信息可能会产生误导,因为它与下载内容的时间有关,而不是呈现内容的时间,但它可以让您了解您悬卡在页面中的位置。
关于cocoa - WebView加载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346970/