怎么把BeforeNavigate2事件的参数pDisp转换成对象

At. H file defines a function DECLARE_EVENTSINK_MAP () virtual void XOnBeforeNavigate2 (LPDISPATCH pDisp, VARIANT FAR * URL, VARIANT FAR * Flags, VARIANT FAR * TargetFrameName, VARIANT FAR * PostData, VARIANT FAR * Headers, BOOL FAR * Cancel); In. CP
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.034 (s). 8 q(s)web窗体实现了web事件接口. 当web窗体产生事件时(例如下载完开始,下载完成等),会查询web窗体对象是否定义了相关的事件函数,如果有相应的事件函数,则自动调用该函数.
例如,对于一个web窗体对象wb,在用户在网页上右键点击网页时,如果自定义wb.showMenu事件函数,则调用该函数显示自定义的菜单,否则显示默认的菜单.
每一个事件函数都是一个触发器函数、一个回调函数。在web窗体产生事件时通过回调触发事件函数.
&本手册中约定使用 wb变量名表示web.form类创建的web窗体对象.使用ele表示web窗体中的元素对象,这也是aardio中默认约定具有特殊意义的变量名,不应将这些默认变量名用于其他目的.
我们可以在开发环境中查看&标准库&窗口,选中web.form库,右键点击库,在弹出菜单中选择编辑源代码.
打开web.form库,查看该库的源代码,可以看到在web.form构造函数的尾部有一句添加事件接口的代码.
var sink, cookie =..com.Connect(this._browser, this );
com.Connect函数将指定的事件接口(table对象,第二个参数)连接到com对象. 正是因为调用了这句代码,使web窗体拥有自定义事件函数的功能.
wb.showMenu
1、函数原型:
wb.showMenu=function(x,y,id,ele){
return 是否显示默认菜单;
2、函数说明:
当用户右键点击网页上的元素时,触发此事件,如果未定义些事件函数,弹出默认右键菜单.
x,y表示右键点击的坐标,而ele表示发生事件的节点对象,
id表示节点的类型,有以下值:
0/*_CONTEXT_MENU_DEFAULT */
默认右键菜单
1/*_CONTEXT_MENU_IMAGE*/
图片右键菜单
2/*_CONTEXT_MENU_CONTROL*/
控件右键菜单
3/*ONTEXT_MENU_TABLE*/
4/*_CONTEXT_MENU_TEXTSELECT */
文本选区右键菜单
5/*_CONTEXT_MENU_ANCHOR*/
锚点,超链接
6/*_CONTEXT_MENU_UNKNOWN/
10/*_CONTEXT_MENU_VSCROLL*/
垂直滚动条
11/*_CONTEXT_MENU_VSCROLL*/
水平滚动条
3、调用示例:
wb.showMenu=function(x,y,id,ele){
if( id == 4/*_CONTEXT_MENU_TEXTSELECT */ )
//如果用户显示的是文本,显示默认菜单
//自定义弹出菜单
popmenu = win.ui.popmenu(winform);
popmenu.add('显示节点内容',function(id){
win.msgbox( ele.innerHTML )
popmenu.popup(x,y,true)
//禁用默认菜单
wb.showMsg
1、函数原型:
wb.showMsg=function( 提示信息, 对话框标题 ){
return 是否显示对话框;
2、函数说明:
该事件在网页弹出对话框以前触发,这里指的对话框指网页脚本创建的对话框,例如javascript中的alert函数创建的对话框,函数有两个参数可以获取对话框的标题,而通过返回值可以控制对话框是否弹出.
有些javascript脚本通过对话框获取用户的输入,这时候,我们可以使用 wb.doScript(&要执行的javascript脚本&) 以执行网页脚本来绕过对话框实现目的功能.
还有一种方法,就是让对话框弹出来,再自动点击指定的按钮,并关闭对话框.我们知道,对话框弹出以后,程序就一直等待用户的操作,不会执行对话框后面的代码,因此:我们需要在对话框弹出之前创建一个后台线程,来关闭弹出的对话框,请看下面的示例.
3、调用示例:
wb.showMsg=function(text/*信息*/,caption/*标题*/){
? ? closeDlg_t = function(title) {
???var hwnd,hctr =
winex.waitActive(title, ,&#32770&,&Button&);
???winex.click(hctr);
? ? thread.create(closeDlg_t,caption/*传递参数给线程*/ )
? ? /*返回false则不显示对话框*/
//打开目标网站
wb.write(&&script&alert('你好吗')&/script&&
wb.NewWindow2
1、函数原型:
wb.NewWindow2=function( ppDisp, Cancel) {
return owner.openproxy /*创建代理窗口捕获网址并在当前窗口打开*/
return ppDisp, /*第二个返回值如果为真,则取消新窗口*/
/*新建的web窗体,并将application作为返回值,则在该web窗口中打开*/
return ppDisp, Cancel
2、函数说明:
弹出新窗口以前触发,有两个输出参数:ppDisp, Cancel
ppDisp如果返回其他web窗体的
application成员,则在该web窗体中打开新窗口.
Cancel返回值指示web窗体是否取消该弹出窗口.例如:return ppDisp,true将会取消弹出窗口.
如果希望在当前窗口中打开链接,则要采取一点技巧,使用一个代理窗口打开网页,在代理窗口中获取网址以后再停止导航并使用当前窗口打开网页.示例如下:
3、调用示例:
wb.NewWindow2=function( ppDisp, Cancel) {
return owner.openproxy /*创建代理窗口捕获网址并在当前窗口打开*/
wb.NewWindow3
1、函数原型:
wb.NewWindow3=function(ppDisp, Cancel,dwFlags,bstrUrlContext, bstrUrl ) {
ppDisp, Cancel,dwFlags,bstrUrlContext, bstrUrl
2、函数说明:
win xp sp2以上版本的win操作系统支持此事件,ppDisp, Cancel是输出参数,使用方法与wb.NewWindow2类似.
而wb.NewWindow3多了一些参数,其中bstrUrlContext指为打开新窗口的源网页url,而bstrUrl为即将打开的目标url,dwFlags可选值如下
_NWMF_UNLOADING = 0x,
在原网页关闭时弹出的窗口_NWMF_SHOWHELP = 0x
在脚本中调用window showHelp 显示的窗口_NWMF_HTMLDIALOG = 0x
显示HTML对话框_NWMF_USERREQUESTED = 0x
用户请求打开的新窗口_NWMF_FORCEWINDOW = 0x
<mandStateChange
1、函数原型:
<mandStateChange = function(cmd,enable) {
2、函数说明:
当命令的激活状态改变时触发。它表明何时激活或关闭Back和Forward菜单项或按钮.
enable参数说明指定的命令是否可用,而cmd可选参数如下:
_CSC_UPDATECOMMANDS
是否可以刷新控制按钮、工具栏
_CSC_NAVIGATEFORWARD
前进命令是否可用
_CSC_NAVIGATEBACK
后退命令是否可用
wb.DownloadBegin
1、函数原型:
wb.DownloadBegin=function(){
2、函数说明:
一个下载开始时触发此事件,刷新也可触发此事件.
wb.DownloadComplete
1、函数原型:
wb.DownloadComplete=function(){
2、函数说明:
一个下载完成时触发此事件,刷新也可触发此事件.
wb.BeforeNavigate2
1、函数原型:
wb.BeforeNavigate2=function( pDisp, url
, Flags, TargetFrameName, PostData, Headers, Cancel ) {
url, Flags, TargetFrameName, PostData, Headers,C
2、函数说明:
导航(打开网址)以前触发此事件.刷新不触发
pDisp web窗体对象
url 要打开的网址
Flags 标志值
TargetFrameName 目标框
PostData 提交的表单数据
Headers HTTP请求头
Cancel 是否取消导航
除第一个参数pDisp以外,其他参数都是输出参数.返回值要按下面的顺序:
url, Flags, TargetFrameName, PostData, Headers,C
不需要返回值的输出参数可以省略或传递null值,例如:
null, , , , ,
wb.NavigateComplete2
1、函数原型:
wb.NavigateComplete2 = function(pDisp, url){
2、函数说明:
每次导航完成触发此函数.刷新不触发.
pDisp为浏览器对象,url为导航网址.
wb.NavigateComplete
1、函数原型:
wb.NavigateComplete = function(pDisp, url){
2、函数说明:
每次导航完成触发此函数.刷新不触发.
pDisp为浏览器对象,url为导航网址.
wb.NavigateError
1、函数原型:
wb.NavigateError=function(pDisp,url,target,statusCode,cancel){
return url,target,statusCode,cancel
2、函数说明:
导航出错时触发此函数,参数说明:
pDisp 浏览器对象.
url 出错的网址.
target 打开该网址的窗口名字
statusCode 错误代码
cancel 这是一个输出参数,指示是否取消导航到默认的错误页面.
输出参数返回顺序为:
return url,target,statusCode,cancel
wb.FileDownload
1、函数原型:
wb.FileDownload=function(activeDocument, cancel){
2、函数说明:
此函数在下载以前触发,有两个参数,
activeDocument表示打开的目标文件 - 是不是可直接显示在窗口的活动文档.
一般普通网页activeDocument为true,而需要弹出下载文件对话框时activeDocument参数的值为false.
3、调用示例:
wb.FileDownload=function(activeDocument, cancel){
if( !activeDocument )
注意这个事件并不提供下载文件的地址,可以在translate,NavigateError等事件中提前获取下载地址
wb.translate
1、函数原型:
wb.translate=function( url ) {
2、函数说明:
网页解析URL时触发此事件,例如点击链接后,下载文件、弹出窗口以前会触发此事件,可在返回值中替换并指定新的网址。
wb.TitleChange
1、函数原型:
wb.TitleChange=function( 网页标题 ) {
2、函数说明:
网页标题改变时触发此事件,默认的网页标题并不显示在窗口标题栏上.
wb.WindowClosing
1、函数原型:
wb.WindowClosing = function( IsChildWindow, Cancel ) {
//返回真阻止窗口关闭
2、函数说明:
在网页脚本中调用 window.close() 函数关闭网页窗口时触发此函数,在函数中返回true阻止窗口关闭.
如果参数 IsChildWindow
为真,该窗口为网页脚本创建的子窗口.}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信