有人可以向我解释 CefSharpLoadHtml
功能是如何工作的吗?
LoadHtml(string html, string url)
html
和url
参数代表什么?
我有兴趣将原始 HTML 字符串中的页面加载到 CefSharp 浏览器中。
有人可以向我解释 CefSharpLoadHtml
功能是如何工作的吗?
LoadHtml(string html, string url)
html
和url
参数代表什么?
我有兴趣将原始 HTML 字符串中的页面加载到 CefSharp 浏览器中。
更新:CefSharp 有一个新
LoadHtml(string html)
方法,可以将 HTML 作为 base64 编码的数据 URI 加载。LoadHtml(string html, string url)
比下面描述的方法更可靠。
在LoadHtml(string html, string url)
:
html
是您的 HTML 字符串,例如"<html><body>Hello world</body></html>"
. 实际上,你甚至可以在字符串中放入其他内容,例如 SVG 标记,只要 Chromium 能够理解。
url
是必需的,因为您的 HTML 代码可能包含尝试执行 AJAX 调用的 JavaScript,并且 Web 浏览器需要了解适用的安全限制。方案(例如“http:”、“about:”)和域(例如“localhost”、“google.com”)会影响点击链接、AJAX 请求、iframe 等行为。
如果您想简单地呈现静态 HTML,请制作url
独特的内容,例如http://rendering/
(以便资源处理程序不会与url
Web 上的真实内容重叠)。如果您需要加载 HTML,然后与之交互或执行 AJAX 调用,请选择url
与您要与之交互的域匹配的域 - 例如,如果您想创建一个替代的 Google 主页并执行 AJAX 搜索查询,您将想https://www.google.com/
用作您的 URL,以便您可以与之通信。
您可以在此处查看源代码LoadHtml
。
CefSharp 所做的是:
url
。Load(url)
告诉 Chromium 加载给定的url
.然后,在引擎盖下:
url
.html
.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("<html><head></head><body><h1>Hello, World!</h1></body></html>", "http://www.example.com/");
希望这可以帮助。
对于 WPF 项目,请尝试以下操作。
在 xaml 中创建对 CefSharp.Wpf 的命名空间引用。
xmlns:cef="clr-命名空间:CefSharp.Wpf;assembly=CefSharp.Wpf"
将ChromiumWebBrowser元素添加到您的窗口。
<cef:ChromiumWebBrowser x:Name="browser" IsBrowserInitializedChanged="browser_IsBrowserInitializedChanged"></cef:ChromiumWebBrowser>
请记住为元素指定一个名称(在本例中,该元素称为browser)。稍后我们将使用它来调用LoadHtml方法。
为IsBrowserInitializedChanged事件创建事件处理程序。这很重要,因为一旦ChromiumWebBrowser控件准备就绪,就会触发此事件。然后我们可以加载html。
把它们放在一起...
<Window x:Class="CEF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CEF"
xmlns:cef="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<cef:ChromiumWebBrowser x:Name="browser" IsBrowserInitializedChanged="browser_IsBrowserInitializedChanged"></cef:ChromiumWebBrowser>
</Grid>
</Window>
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("<html><head></head><body><h1>Hello, World!</h1></body></html>", "http://www.example.com/");
}
}
}