CefSharp LoadHtml
有人可以向我解释一下CefSharp LoadHtml
函数是如何工作的吗?
LoadHtml(string html, string url)
html
和url
参数代表什么?
我有兴趣将原始HTML字符串中的页面加载到CefSharp浏览器中。
html
是你的HTML字符串,例如"Hello world"
。 实际上,只要Chromium能够理解,您甚至可以在字符串中添加其他内容,例如SVG标记。
需要url
,因为您的HTML代码可能包含尝试执行AJAX调用的JavaScript,并且Web浏览器需要了解适用的安全限制。 该方案(例如“http:”,“about:”)和域(例如“localhost”,“google.com”)影响行为,例如点击链接,AJAX请求,iframe等。
如果您只想渲染静态HTML,请将url
唯一的,例如http://rendering/
(以便资源处理程序不会与Web上的真实url
重叠)。 如果您需要加载HTML然后与之交互或执行AJAX调用,请选择与您要与之交互的域匹配的url
– 例如,如果您要创建替代Google主页并执行AJAX搜索查询,则我们希望将https://www.google.com/
用作您的url,以便您与其进行通信。
您可以在此处查看LoadHtml
的源代码 。
CefSharp的作用是:
- 注册给定
url
的资源处理程序。 - 调用
Load(url)
告诉Chromium加载给定的url
。
然后,在引擎盖下:
- Chromium请求
url
。 - 资源处理程序拦截请求,并返回您的
html
。 - Chromium呈现您的
html
而不是URL的真实内容。
请尝试以下代码
Cef.Initialize(new CefSettings()); ChromiumWebBrowser browser = new ChromiumWebBrowser(string.Empty) { Location = new Point(0, 0), Dock = DockStyle.Fill }; //add to a System.Windows.Forms.Form or some other container. this.Controls.Add(browser); //the url parameter does not have to be an existing address. browser.LoadHtml("Hello, World!
", "http://www.example.com/");
希望这可以帮助。
对于WPF项目,请尝试以下操作。
在xaml中创建对CefSharp.Wpf的命名空间引用。
的xmlns:CEF = “CLR-名称空间:CefSharp.Wpf;assembly= CefSharp.Wpf”
将ChromiumWebBrowser元素添加到窗口中。
记住为元素指定一个名称(在这种情况下,该元素称为浏览器 )。 稍后我们将使用它来调用LoadHtml方法。
为IsBrowserInitializedChanged事件创建事件处理程序。 这很重要,因为一旦ChromiumWebBrowser控件准备就绪,就会触发此事件。 然后我们可以加载HTML。
把它们放在一起……
MainWindow.xaml
MainWindow.xaml.cs
using System.Windows; namespace CEF { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void browser_IsBrowserInitializedChanged(object sender, DependencyPropertyChangedEventArgs e) { // the browser control is initialized, now load the html browser.LoadHtml("Hello, World!
", "http://www.example.com/"); } } }