导航:  CWebBrowser Class > WebBrowser Events >

BeforeNavigate2

上一页返回章节概述下一页

描述

 

在导航发生在给定对象的火灾(在窗口或框架的元素).

 

语法

SUB BeforeNavigate2 ( _

   BYVAL hwndContainer AS HWND, _

   BYVAL pDisp AS IDispatch PTR, _

   BYVAL vUrl AS VARIANT PTR, _

   BYVAL vFlags AS VARIANT PTR, _

   BYVAL vTargetFrameName AS VARIANT PTR, _

   BYVAL vPostData AS VARIANT PTR, _

   BYVAL vHeaders AS VARIANT PTR, _

   BYVAL pbCancel AS VARIANT_BOOL PTR _

)

 

参数

hwndContainer

[in]处理的OLE容器窗口.

pDisp

[in]指针为代表的窗口或框架的WebBrowser对象的IDispatch接口.这个界面可以查询的IWebBrowser2接口.

vUrl

[in]指向VARIANTVT_BSTR包含URL是导航.

vFlags

[in]指向VARIANT VT_I4型包含以下标志,或零.

beforeNavigateExternalFrameTarget

Windows Internet Explorer 7或更高版本.这个导航是针对这个浏览器的外部窗口或标签的结果.

vTargetFrameName

[in]指向VARIANTVT_BSTR包含要显示的资源在其框架的名称,或NULL如果没有命名的框架是针对资源.

vPostData

[in]指向VARIANTVT_BYREF|VT_VARIANT包含要发送到服务器如果HTTP POST交易正在使用的数据.

vHeaders

[in]指向VARIANTVT_BSTR包含要发送到服务器的附加HTTP头(httpurls只).标头可以指定诸如服务器所需的操作、传递给服务器的数据类型或状态代码之类的事件.

pbCancel

[in, out]类型的指针VARIANT_BOOL包含取消标志变量.应用程序可以设置这个参数为VARIANT_TRUE取消导航操作,或VARIANT_FALSE让它继续.

 

返回值

 

无返回值.

 

DISPID 事件

 

DISPID_BEFORENAVIGATE2

 

此事件的DISPID定义在exdispid.inc.使用此值来确定事件处理程序时,执行IDispatch.Invoke.

 

备注

 

指定的vPostData后数据作为SAFEARRAY传递的结构.不同类型应该是VT_BYREF|VT_VARIANT,它指向一个SAFEARRAY.的SAFEARRAY应该VT_UI1元素类型,尺寸,和有一个元数等于后数据的字节数.

vUrl参数可以指向一个项目标识符列表(PIDL)在一个外壳名字空间实体的情况下没有URL表示.

事件的BeforeNavigate2代替BeforeNavigateFrameBeforeNavigate事件,应不再使用.的pDisp参数指定相应的WebBrowser对象明确,导航的出现.微软Internet Explorer 3.0要求FrameBeforeNavigate和目标框架的名称来识别导航目标.然而,这个解决方案可能是模糊的,因为框架名不是唯一的.

Note Internet Explorer 4.0后来继续火的BeforeNavigate与Internet Explorer 3.0.兼容性FrameBeforeNavigate事件

pDisp参数指定相应的导航顶层框架的WebBrowser对象.导航到不同的URL可能由于外部自动发生,从脚本内部自动化,或者用户点击一个链接或在地址栏中输入.这种定位的处理可以通过设置参数的bCancel VARIANT_TRUE、忽略或重新修改导航方法的WebBrowser对象修改.

当换发为WebBrowser对象导航的方法,Stop首先必须执行pDisp.这阻止了在新导航正在处理时声明取消导航出现的网页的显示.

 

示例

 

下面的示例演示如何将导航重定向到另一个URL.

 

SUB WebBrowser_BeforeNavigate2Proc (BYVAL hwndContainer AS HWND, BYVAL pdisp AS IDispatch PTR, _

  BYVAL vUrl AS VARIANT PTR, BYVAL Flags AS VARIANT PTR, BYVAL TargetFrameName AS VARIANT PTR, _

  BYVAL PostData AS VARIANT PTR, BYVAL Headers AS VARIANT PTR, BYVAL pbCancel AS VARIANT_BOOL PTR)

 

 ' // Sample code to redirect navigation to another url

 IF AfxVarToStr(vUrl) = "http://com.it-berater.org/" THEN

    ' // Get a reference to the Afx_IWebBrowser2 interface

    DIM pwb AS Afx_IWebBrowser2 PTR = cast(Afx_IWebBrowser2 PTR, cast(ULONG_PTR, pdisp))

    IF pwb THEN

       ' // Stop loading the page

       pwb->Stop

       ' // Cancel the navigation operation

       *pbCancel = VARIANT_TRUE

       DIM vNewUrl AS VARIANT

       vNewUrl.vt = VT_BSTR

       vNewUrl.bstrVal = SysAllocString("http://www.planetsquires.com/protect/forum/index.php")

       pwb->Navigate2(@vNewUrl)

       VariantClear @vNewUrl

    END IF

 END IF

 

END SUB

' ========================================================================================

 

引用文件

 

CWebBrowserEventsImpl.inc