CEFにHTMLテキストを直接与える場合、Data URIでテキストをURL化し、LoadURLに指定する。
// HTML文書追加に必要 // #include <include/cef_frame.h> // CefFrame // #include <include/cef_parser.h> // CefURIEncode void SetHTML(CefRefPtr<CefBrowser> browser) { /* CEFでHTMLコンテンツを表示する方法の例 LoadURLを使うので、URI経由でしかロードできない。 そこで、リソースをURIで表す技術のData URIを使い、 HTML文書をURIにエンコードしてロードする。 */ // 表示したいHTML文書 const std::u8string html_content = u8R"(<html> <head><meta charset="UTF-8"></head> <body style="background-color:#CCCCCC;"><p>こんにちは☺</p></body> </html>)"; ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// CefRefPtr<CefFrame> frame = browser->GetMainFrame(); // 1. HTMLコンテンツを CefString に変換 CefString html_cef_string = CefString( (const char*)html_content.c_str() ); // 2. Data URI の作成 std::string data_uri_str = "data:text/html;charset=utf-8,"; // 3. HTMLコンテンツをエンコードして Data URI に追加 CefString encoded_html = CefURIEncode(html_cef_string, false); data_uri_str += encoded_html.ToString(); // 3. Data URI をロード frame->LoadURL(CefString(data_uri_str)); }
