描述
在导航发生在给定对象的火灾(在窗口或框架的元素).
语法
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]指向VARIANT型VT_BSTR包含URL是导航. |
vFlags |
[in]指向VARIANT VT_I4型包含以下标志,或零. beforeNavigateExternalFrameTarget Windows Internet Explorer 7或更高版本.这个导航是针对这个浏览器的外部窗口或标签的结果. |
vTargetFrameName |
[in]指向VARIANT型VT_BSTR包含要显示的资源在其框架的名称,或NULL如果没有命名的框架是针对资源. |
vPostData |
[in]指向VARIANT型VT_BYREF|VT_VARIANT包含要发送到服务器如果HTTP POST交易正在使用的数据. |
vHeaders |
[in]指向VARIANT型VT_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代替BeforeNavigate和FrameBeforeNavigate事件,应不再使用.的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