如何解决wxWebView(wxWidgets)中的“确保网址//ieframe.dll/dnserrordiagoff.htm#正确”错误

问题描述 投票:0回答:2

我使用 wxWebView 来显示我们的页面内容,当我没有任何页面内容时,即页面为空白,我看到以下错误:

enter image description here

我有自己的文件系统处理程序类,派生自

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。

c++ internet-explorer wxwidgets
2个回答
0
投票

所以问题出在页面内容为空的时候。所以我只是尝试在内存输入流中添加一个空格字符,如下所示,看看效果。看起来有效!

基本上我都替换了

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 是否好,甚至是否正确,所以如果有人有更好的答案,请告诉我。


0
投票

1234561234123 如果 123123123 不起作用,重新启动您的 123123123 登录电脑

© www.soinside.com 2019 - 2024. All rights reserved.