Quelqu'un pourrait-il m'expliquer comment fonctionne la fonction CefSharp LoadHtml
?
LoadHtml(string html, string url)
Que représentent les paramètres html
et url
?
Je souhaite charger une page à partir d'une chaîne HTML brute dans le navigateur CefSharp.
Mise à jour: CefSharp a une nouvelle méthode
LoadHtml(string html)
qui charge le HTML comme URI de données encodées en base64. Il est plus fiable que la méthodeLoadHtml(string html, string url)
décrite ci-dessous.
Dans LoadHtml(string html, string url)
:
html
est votre chaîne HTML, par exemple "<html><body>Hello world</body></html>"
. En fait, vous pouvez même mettre d'autres contenus dans la chaîne, tels que le balisage SVG, tant que Chromium peut le comprendre.
url
est nécessaire car votre code HTML peut contenir du JavaScript qui tente d'exécuter AJAX appels, et le navigateur Web doit comprendre quelles restrictions de sécurité s'appliquent. Le schéma (par exemple "http: "," about: ") et le domaine (par exemple," localhost "," google.com ") affectent des comportements tels que cliquer sur des liens, AJAX requêtes, iframes, etc.
Si vous voulez simplement rendre du HTML statique, faites de url
quelque chose d'unique tel que http://rendering/
(Afin que le gestionnaire de ressources ne chevauche pas un vrai url
sur le web). Si vous devez charger le code HTML, puis interagir avec lui ou effectuer des appels AJAX, choisissez un url
qui correspond au domaine avec lequel vous souhaitez interagir - par exemple, si vous le souhaitez pour créer une autre page d'accueil Google et effectuer des AJAX requêtes de recherche, vous voudrez utiliser https://www.google.com/
comme URL afin de pouvoir communiquer avec elle.
Vous pouvez voir le code source pour LoadHtml
ici .
Ce que fait CefSharp, c'est:
url
donné.Load(url)
pour dire à Chromium de charger le url
donné.Puis, sous le capot:
url
.html
.html
au lieu du contenu réel de l'URL.Essayez le code suivant
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/");
J'espère que cela t'aides.
Pour un projet WPF, essayez ce qui suit.
Créez une référence d'espace de noms à CefSharp.Wpf dans le xaml.
xmlns: cef = "espace de noms clr: CefSharp.Wpf; Assembly = CefSharp.Wpf"
Ajoutez l'élément ChromiumWebBrowser à votre fenêtre.
<cef:ChromiumWebBrowser x:Name="browser" IsBrowserInitializedChanged="browser_IsBrowserInitializedChanged"></cef:ChromiumWebBrowser>
N'oubliez pas d'attribuer un nom à l'élément (dans ce cas, l'élément est appelé navigateur). Nous l'utiliserons pour appeler la méthode LoadHtml plus tard.
Créez un gestionnaire d'événements pour l'événement IsBrowserInitializedChanged. Ceci est important, car cet événement sera déclenché une fois que le contrôle ChromiumWebBrowser sera prêt. Puis pouvons-nous charger du HTML.
Mettre tous ensemble...
<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/");
}
}
}