通过WebBrowser控件,实现IE浏览器菜单功能

这篇文章所讲的技术,只支持IE浏览器,请读者注意

WebBrowser控件,是IE浏览器的内置控件。顾名思义,这个控件我们可以看成是浏览器本身。通过WebBrowser控件,可以实现一部分IE浏览器的菜单命令。

1. 使用

首先在画面上要通过<object>标签创建这个控件。

<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT> 

2. 调用方法

WebBrowser.ExecWB nCmdID, nCmdExecOpt, [pvaIn], [pvaOut]

通过这个控件的ExecWB方法,执行命令。例如,菜单的打开功能:

document.all.WebBrowser.ExecWB(1,1);

3. 方法的参数

3.1 nCmdID 参数(这些参数可以通过变量名知道对应菜单上的功能,这里不再逐个描述)

OLECMDID_OPEN = 1 
OLECMDID_NEW = 2 
OLECMDID_SAVE = 3 
OLECMDID_SAVEAS = 4 
OLECMDID_SAVECOPYAS = 5 
OLECMDID_PRINT = 6 
OLECMDID_PRINTPREVIEW = 7 
OLECMDID_PAGESETUP = 8 
OLECMDID_SPELL = 9 
OLECMDID_PROPERTIES = 10 
OLECMDID_CUT = 11 
OLECMDID_COPY = 12 
OLECMDID_PASTE = 13 
OLECMDID_PASTESPECIAL = 14 
OLECMDID_UNDO = 15 
OLECMDID_REDO = 16 
OLECMDID_selectALL = 17 
OLECMDID_CLEARselectION = 18 
OLECMDID_ZOOM = 19 
OLECMDID_GETZOOMRANGE = 20 
OLECMDID_updateCOMMANDS = 21 
OLECMDID_REFRESH = 22 
OLECMDID_STOP = 23 
OLECMDID_HIDETOOLBARS = 24 
OLECMDID_SETPROGRESSMAX = 25 
OLECMDID_SETPROGRESSPOS = 26 
OLECMDID_SETPROGRESSTEXT = 27 
OLECMDID_SETTITLE = 28 
OLECMDID_SETDOWNLOADSTATE = 29 
OLECMDID_STOPDOWNLOAD = 30 


3.2 nCmdExecOpt 参数(不知道如何的话,第二个参数使用1)

OLECMDEXECOPT_DODEFAULT = 0, 
OLECMDEXECOPT_PROMPTUSER = 1, 
LECMDEXECOPT_DONTPROMPTUSER = 2, 
OLECMDEXECOPT_SHOWHELP = 3 


3.3 常用参数

WebBrowser.ExecWB(1,1)  //打开
WebBrowser.ExecWB(2,1)  //关闭现在所有的IE窗口,并打开一个新窗口
WebBrowser.ExecWB(4,1)  //保存网页
WebBrowser.ExecWB(6,1)  //打印
WebBrowser.ExecWB(7,1)  //打印预览
WebBrowser.ExecWB(8,1)  //打印页面设置
WebBrowser.ExecWB(10,1) //查看页面属性
WebBrowser.ExecWB(15,1) //好像是撤销,有待确认
WebBrowser.ExecWB(17,1) //全选
WebBrowser.ExecWB(22,1) //刷新
WebBrowser.ExecWB(45,1) //关闭窗体无提示

4. 测试页面

<!DOCTYPE html>
<html lang="zh-cn">
  <head>
    <meta charset="utf-8" />
    <meta name="author" content="Densin.Tian@CisternData" />
    <title>WebBrowser Test</title>
  </head>
  <body>
    This is a WebBrowser Test.<br/>
    <OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT> 
    <input name="btn1" onClick="document.all.WebBrowser.ExecWB(1,1) " type="button" value="打开">
    <input name="btn2" onClick="document.all.WebBrowser.ExecWB(2,1) " type="button" value="关闭所有">
    <input name="btn3" onClick="document.all.WebBrowser.ExecWB(4,1) " type="button" value="另存为"> 
    <input name="btn4" onClick="document.all.WebBrowser.ExecWB(6,1) " type="button" value="打印">
    <input name="btn5" onClick="document.all.WebBrowser.ExecWB(6,6) " type="button" value="直接打印">
    <input name="btn6" onClick="document.all.WebBrowser.ExecWB(7,1) " type="button" value="打印预览">
    <input name="btn7" onClick="document.all.WebBrowser.ExecWB(8,1) " type="button" value="页面设置">
    <input name="btn8" onClick="document.all.WebBrowser.ExecWB(10,1)" type="button" value="属性">
    <input name="btn9" onClick="document.all.WebBrowser.ExecWB(17,1)" type="button" value="全选">
    <input name="btna" onClick="document.all.WebBrowser.ExecWB(22,1)" type="button" value="刷新">
    <input name="btnb" onClick="document.all.WebBrowser.ExecWB(45,1)" type="button" value="关闭">
  </body>
</html>

画面测试

技术分享


5. 关于安全性

WebBrowser控件虽然是IE内置的控件,但是因为它可能会直接操作客户端打印机等操作,并不是默认启用的,在安全性为默认的情况下。只有将使用该控件的站点设置为【信任】,该控件才可以使用。下图在非信任的情况下,控件被阻止的画面。

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。