我使用 wxWebView 来显示我们的页面内容,当我没有任何页面内容时,即页面为空白,我看到以下错误:
我有自己的文件系统处理程序类,派生自
wxWebViewHandler
,如下所示,在GetFile
函数中,我设置了页面的内容。除非页面没有任何内容,否则一切正常。也许我应该退回一些别的东西。
struct WxHtmlFSHandler: public wxWebViewHandler
{
WxHtml* dst_;
WxHtmlFSHandler( const wxString& scheme, WxHtml* dst ): wxWebViewHandler( scheme ), dst_( dst )
{ }
wxFSFile* GetFile( const wxString& uri ) override;
~WxHtmlFSHandler()
{
dst_ = nullptr;
}
};
...
if( dst_ && !uri.empty() )
{
if( uri.Contains( dst_->defaultURL_ ) )
{
// load the page's content
//if( !dst_->currentPage_.empty() )
return new wxFSFile( new wxMemoryInputStream( dst_->currentPage_.data(), dst_->currentPage_.size() ),
uri, wxT( "text/html" ), dst_->currentAnchor_
#if wxUSE_DATETIME
, wxDateTime::Now()
#endif
);
...
}
我现在也在使用IE引擎。
#if wxUSE_WEBVIEW_IE
wxWebViewIE::MSWSetEmulationLevel( wxWEBVIEWIE_EMU_IE11 );
#endif
我在 Win 10 上使用 wxWidgets 3.1.5。
所以问题出在页面内容为空的时候。所以我只是尝试在内存输入流中添加一个空格字符,如下所示,看看效果。看起来有效!
基本上我都替换了
return new wxFSFile( new wxMemoryInputStream( "", 0 ),
uri, wxT( "text/html" ), dst_->currentAnchor_
#if wxUSE_DATETIME
, wxDateTime::Now()
#endif
);
与
return new wxFSFile( new wxMemoryInputStream( " ", 1 ),
uri, wxT( "text/html" ), dst_->currentAnchor_
#if wxUSE_DATETIME
, wxDateTime::Now()
#endif
);
现在页面是空白的,没有按预期显示任何内容。我不知道这个 hack 是否好,甚至是否正确,所以如果有人有更好的答案,请告诉我。
1234561234123 如果 123123123 不起作用,重新启动您的 123123123 登录电脑