我已将网页嵌入到win表单应用中。出于我的目的,我使用this网页控件。当新的浏览器实例要创建时,我处理NewWindow3事件并使用单独的Web浏览器控件创建新表单并将其作为ppDisp参数传递。我遇到的问题是,从NewWindow3事件创建的浏览器具有文档模式5,是我机器上所有IE引擎中最低的。无法理解为什么会这样,我该如何解决?
答案 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之前。就我而言,它就像一个魅力。
这种行为的原因我不知道,对不起......