CefSharp LoadHtml
関数の仕組みを誰かに説明してもらえますか?
LoadHtml(string html, string url)
html
およびurl
パラメータは何を表していますか?
生のHTML文字列からCefSharpブラウザーにページを読み込むことに興味があります。
更新:CefSharpには、HTMLをbase64でエンコードされたデータURIとしてロードする新しい
LoadHtml(string html)
メソッドがあります。以下で説明するLoadHtml(string html, string url)
メソッドよりも信頼性が高くなります。
LoadHtml(string html, string url)
内:
html
はHTML文字列です。 _"<html><body>Hello world</body></html>"
_。実際、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検索クエリを実行するには、URLとして_https://www.google.com/
_を使用して、通信できるようにします。
ここでLoadHtml
のソースコード を確認できます。
CefSharpの機能は次のとおりです。
url
のリソースハンドラーを登録します。Load(url)
を呼び出して、指定されたurl
をロードするようChromiumに指示します。次に、内部で:
url
をリクエストします。html
を返します。html
をレンダリングします。次のコードを試してください
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-namespace: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/");
}
}
}