Winforms WebBrowser控件NewWindow3事件显示具有文档模式5的新浏览器

时间:2013-10-22 14:54:56

标签: winforms c#-4.0 popup webbrowser-control new-window

我已将网页嵌入到win表单应用中。出于我的目的,我使用this网页控件。当新的浏览器实例要创建时,我处理NewWindow3事件并使用单独的Web浏览器控件创建新表单并将其作为ppDisp参数传递。我遇到的问题是,从NewWindow3事件创建的浏览器具有文档模式5,是我机器上所有IE引擎中最低的。无法理解为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我在Delphi 5中长期以来对TEmbeddedWB组件(TWebbrowser VCL组件的扩展版本)的问题完全相同。 我过去做过很多研究而没有结果。但是今天我在大约3个小时的研究和试验和错误后找到了解决方案。 TEmbeddedWB有一个公共程序" AssignEmptyDocument"具有以下简单实现:

procedure TEmbeddedWB.AssignEmptyDocument(bWait: Boolean = False);
begin
  Navigate('about:blank');
  if bWait then
    Wait;
end;

我必须在分配ppDisp之前执行此过程。这是我在Delphi / Object pascal中的简化解决方案:

procedure Tfrm_browser.EmbeddedWBNewWindow3(ASender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext,
  bstrUrl: WideString);
var popup: Tfrm_popup;
begin   
  Application.CreateForm(Tfrm_popup, popup);
  popup.EmbeddedWB.AssignEmptyDocument;
  ppDisp := popup.EmbeddedWB.Application;
end;

在我的情况下,弹出窗口的documentMode是" 9"之后,如预期的那样。 所以,只需尝试进行一次"导航(' about:blank');"在分配ppDisp之前。就我而言,它就像一个魅力。

这种行为的原因我不知道,对不起......

相关问题