首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CefSharp LoadHtml

CefSharp LoadHtml
EN

Stack Overflow用户
提问于 2014-12-26 23:48:07
回答 3查看 28.3K关注 0票数 17

有人能给我解释一下CefSharp LoadHtml函数是如何工作的吗?

代码语言:javascript
复制
LoadHtml(string html, string url)

htmlurl参数代表什么?

我对将页面从原始的超文本标记语言字符串加载到CefSharp浏览器感兴趣。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-29 14:47:29

HTML : CefSharp有一个新的LoadHtml(string html)方法,它将

作为base64编码的数据URI加载。下面描述的LoadHtml(string html, string url)方法更可靠。

LoadHtml(string html, string url)

html是你的超文本标记语言字符串,例如"<html><body>Hello world</body></html>"。实际上,您甚至可以在字符串中添加其他内容,比如SVG标记,只要Chromium能够理解它。

之所以需要url,是因为您的HTML代码可能包含尝试执行AJAX调用的JavaScript,而web浏览器需要了解应用了哪些安全限制。方案(例如"http:“、"about:")和域(例如"localhost”、"google.com")影响诸如点击链接、AJAX请求、iframes等行为。

如果你想简单地呈现静态超文本标记语言,可以使url具有唯一性,比如http://rendering/ (这样资源处理程序就不会与web上真正的url重叠)。如果您需要加载HTML,然后与之交互或执行AJAX调用,请选择一个与您希望与之交互的域相匹配的url -例如,如果您想要创建一个替代的谷歌主页并执行AJAX搜索查询,您将希望使用https://www.google.com/作为您的URL,以便您可以与其进行通信。

您可以看到source code for LoadHtml here

CefSharp所做的是:

Chromium

  • 为给定的Chromium Load(url)注册一个资源处理程序,以通知Chromium加载给定的for

然后,在引擎盖下:

url.

  • The资源处理程序截取请求,并返回您的html.

  • Chromium呈现您的而不是
  1. 的真实内容。
票数 40
EN

Stack Overflow用户

发布于 2015-02-20 21:09:39

尝试以下代码

代码语言:javascript
复制
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/");

希望这能有所帮助。

票数 6
EN

Stack Overflow用户

发布于 2016-07-05 12:42:07

对于WPF项目,请尝试以下操作。

在xaml中创建对CefSharp.Wpf的命名空间引用。

xmlns:cef="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf“

ChromiumWebBrowser元素添加到您的窗口。

代码语言:javascript
复制
<cef:ChromiumWebBrowser x:Name="browser" IsBrowserInitializedChanged="browser_IsBrowserInitializedChanged"></cef:ChromiumWebBrowser>

请记住为元素指定一个名称(在本例中,该元素称为browser)。稍后我们将使用它来调用LoadHtml方法。

IsBrowserInitializedChanged事件创建事件处理程序。这一点很重要,因为一旦ChromiumWebBrowser控件就绪,就会触发此事件。然后我们可以加载html。

把所有这些放在一起...

MainWindow.xaml

代码语言:javascript
复制
<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>

MainWindow.xaml.cs

代码语言:javascript
复制
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/");
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27659086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档