CEF CEF3 常见问题(FAQ)

1. CEF1和CEF3有什么区别?

       CEF1使用单进程架构,CEF3使用多进程架构。CEF3的架构与Chrome浏览器非常相似,因此往往具有更好的性能,稳定性和新功能。

 

2. CEF1需要支持多长时间?

    不再支持CEF1。

 

3. 支持CEF的[某个号码]发布分支多长时间?

 

4. 我可以使用我的专有应用程序使用和分发CEF吗?

    是。CEF使用BSD开源许可证获得许可。请参阅每个二进制分发包含的LICENSE.txt文件

 

5. CEF有很多动态库。我可以将所有这些库静态链接到我的闭源应用程序中吗?

    可能不合法。Chromium基于具有许多不同许可证的第三方库。访问CEF3申请中的“about:credits”以查看完整列表。将这些库静态链接到封闭源应用程序可能会违反至少一些这些许可证的条款。如果您需要明确的答案,请咨询法律顾问。

 

6. CEF的库真的很大。我可以让它们变小吗?

    也许,这取决于您的要求。在这里的在哪里铬文件大小来自一个有趣的视角。如果您不关心加载时间,可以使用PECompactUPX压缩二进制文件。但是,在大多数情况下,最好将CEF二进制文件保持原样并将其压缩为安装程序可执行文件的一部分。

 

7. 如何知道二进制发行版中的哪些文件包含在我的应用程序中?我可以排除[某些文件]吗?
    请参阅二进制分发包含的README.txt文件。它提供有关每个二进制文件的信息以及该文件是可选的还是必需的。

8. 如何创建[需求列表]的应用程序?

    阅读教程GeneralUsage维基页面,了解CEF的工作原理。浏览include目录中的CEF头文件,以全面了解CEF的功能。当您准备好开始编写应用程序时,请从二进制分发版中包含的cefclient或cefsimple示例应用程序开始,然后慢慢删除您不需要检查一切仍然有效的部分。然后使用相同的方法添加任何新功能。

 

9. 如何使用[在此处插入类/功能名称]?

    所有CEF类和函数都记录在头文件中。您也可以在网上找到CEF1 API文档在这里和CEF3 API文档在线这里。cefclient示例应用程序演示了许多功能,也是一个很好的参考。

 

10. 如何从源代码构建CEF?

    有关完整的详细信息,请参阅BranchesAndBuilding Wiki页面。

 

11. 我正在尝试使用[某些非标准/非常新/非常旧的操作系统或编译器]构建,我该怎么办?

    CEF开发人员仅在Windows,Mac OS X和Linux上使用标准构建工具进行测试。有关构建要求,请参阅BranchesAndBuilding Wiki页面。我们不测试其他配置,如果谷歌搜索错误消息没有帮助,我们可能也无法帮助

 

11. 如何在页面中执行JavaScript?

    CEF支持许多执行JavaScript的选项,包括V8扩展和绑定。最简单的方法是使用CefFrame :: ExecuteJavaScript()方法。有关完整的详细信息,请参阅JavaScriptIntegration Wiki页面。

 

12. 我正在尝试使用file://协议显示本地文件,它不起作用或我收到安全警告,我该怎么办?

    file://协议接收Chromium内部的特殊处理和安全限制。在应用程序中包含本地文件的最佳方法是通过CefRegisterSchemeHandlerFactory()或(CEF3)CefRequestHandler :: GetResourceHandler()方法使用自定义方案处理程序。有关详细信息,请参阅GeneralUsage Wiki页面的“请求处理”部分。

 

13. 什么时候在CEF3中创建一个新的渲染过程?

    创建新浏览器时以及现有浏览器从一个源导航到另一个源时(例如,从“http://www.google.com”到“http://www.facebook”),通常会创建新的渲染过程。 COM“)。有关将在渲染过程中调用的方法,请参阅CefRenderProcessHandler。有关将在浏览器进程中调用的方法,请参阅CefBrowserProcessHandler。有关其他技术细节,请参阅过程模型文档。

 

13. 如何在CEF3中的浏览器和渲染过程之间发送信息?

    CefBrowser和CefFrame对象同时存在于浏览器和渲染过程中。要为所有渲染进程提供相同的信息,请在浏览器进程中实现CefBrowserProcessHandler :: OnRenderProcessThreadCreated(),这将在渲染过程中将信息传递给CefRenderProcessHandler :: OnRenderThreadCreated()。要动态提供信息,请使用与特定CefBrowser实例关联的进程消息(CefProcessMessage),并使用CefBrowser :: SendProcessMessage()方法发送。有关详细信息,请参阅GeneralUsage Wiki页面的“进程间通信(IPC)”部分。

 

14. CEF3中如何使用命令行参数?

    以使用命令行参数配置CEF3和Chromium中的许多功能。这些参数采用“--some-argument [= optional-param]”的形式,并通过CefExecuteProcess()和CefMainArgs结构传递给CEF。要在将CefSettings结构传递给CefInitialize()之前禁止从命令行处理参数,请将CefSettings.command_line_args_disabled设置为true。要在程序中指定命令行参数,请实现CefApp :: OnBeforeCommandLineProcessing()方法。有关详细信息,请参阅GeneralUsage Wiki页面的“命令行参数”部分。

 

15. 我的CEF3应用程序很大,加载时间很长,或者不适用于非浏览器进程。我有什么选择?

    您可以使用最少的内容创建单独的可执行项目,仅在启动非浏览器进程时使用。有关详细信息,请参阅GeneralUsage Wiki页面的“应用程序结构”部分。

 

16. 为什么我的CEF3应用程序在启动期间需要几秒钟才能显示Web内容?

    应用程序启动期间的Web内容加载可能会因网络代理解析而延迟(例如,如果在Windows上选中“自动检测代理设置”)。为了获得最佳用户体验,请考虑将应用程序设计为首先显示静态启动页面,然后使用元刷新重定向到实际网站- 重定向将被阻止,直到代理解析完成。出于测试目的,可以使用“--no-proxy-server”命令行标志禁用代理解析。通过从命令行运行“chrome --url = ...”,也可以在Google Chrome中复制代理解析延迟。有关详细信息,请参阅GeneralUsage Wiki页面的“代理解析”部分。

猜你喜欢

转载自blog.csdn.net/xiezhongyuan07/article/details/84375420
CEF