delphi下webbrowser的应用
查找操作tagName为input的对象var i:Integer; myole:oleVariant; begin myole := wb1.Document; for i := 0 to myole.all.length - 1 do begin if myole.all.item(i).tagName = 'INPUT' then begin mmo1.Lines.Add(myole.all.item(i).name); mmo1.Lines.Add(myole.all.item(i).value); end; end; end;
WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 WebBrowser1.GoForward; //前进 WebBrowser1.Navigate('...'); //打开指定页面 WebBrowser1.Navigate('about:blank'); //打开空页面 -------------------------------------------------------------------------------- //打开空页面, 并写入... WebBrowser1.Navigate('about:<head><title>标题></title><body>页面内容</body>'); -------------------------------------------------------------------------------- //读取网页脚本中的变量: procedure TForm1.Button1Click(Sender: TObject); var s: string; i: Integer; begin s := WebBrowser1.OleObject.document.Script.str; i := WebBrowser1.OleObject.document.Script.num; ShowMessage(s); //Hello ShowMessage(IntToStr(i)); //99 //也可以这样读: s := WebBrowser1.OleObject.document.parentWindow.str; i := WebBrowser1.OleObject.document.parentWindow.num; ShowMessage(s); //Hello ShowMessage(IntToStr(i)); //99 end; 假如网页中有这样的语句: <script> var str = "Hello"; i = 99; </script> -------------------------------------------------------------------------------- //调用网页脚本中的函数: procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.OleObject.document.parentWindow.MB(); //HTML-Js //如需指定脚本语言, 需要: WebBrowser1.OleObject.document.parentWindow.execScript('MB()','JavaScript'); //HTML-Js end; 假如有这样的脚本: <script> function MB(){ alert('HTML-Js'); } </script> -------------------------------------------------------------------------------- //判断网页及内部框架网页是否全部下载完毕 procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if WebBrowser1.Application = pDisp then begin Text := '网页下载完毕!'; end; end; -------------------------------------------------------------------------------- //改变背景色或背景图片: WebBrowser1.OleObject.document.body.bgcolor := '#FF0000'; WebBrowser1.OleObject.document.body.background := '...图片地址'; -------------------------------------------------------------------------------- //操作有 ID 标签的对象: var s: string; begin s := WebBrowser1.OleObject.document.getElementByID('span1').innerText; ShowMessage(s); //这是 span1 标签中的内容 //或者: s := WebBrowser1.OleObject.document.parentWindow.span1.innerText; ShowMessage(s); //这是 span1 标签中的内容 //隐藏它: WebBrowser1.OleObject.document.parentWindow.span1.style.display := 'none'; end; 假如网页中有这样的内容: <span id=span1>这是 span1 标签中的内容</span> -------------------------------------------------------------------------------- //获取网页源代码 var s: string; begin s := WebBrowser1.OleObject.document.body.innerHTML; //body内的所有代码 s := WebBrowser1.OleObject.document.body.outerHTML; //body内的所有代码, 包含body标签 s := WebBrowser1.OleObject.document.documentElement.innerHTML; //html内的所有代码 end; -------------------------------------------------------------------------------- //WebBrowser 中的右键菜单 //先要添加ApplicationEvents1,指定其Message事件 //屏蔽右键菜单 procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin with Msg do begin if not IsChild(WebBrowser1.Handle, hWnd) then Exit; Handled := (message = WM_RBUTTONDOWN) or (message = WM_RBUTTONUP) or (message = WM_CONTEXTMENU); end; end; //替换右键菜单 procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var mPoint: TPoint; begin if IsChild(WebBrowser1.Handle, Msg.Hwnd) and ((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)) then begin GetCursorPos(mPoint); //得到光标位置 PopupMenu1.Popup(mPoint.X, mPoint.Y); //弹出popupmenu1的菜单 Handled:=True; end; end; -------------------------------------------------------------------------------- //新页面写入 begin WebBrowser1.Navigate('about:blank'); WebBrowser1.OleObject.Document.Writeln('ok'); end;
单个frames的输入 var o : Olevariant; begin o := WebBrowser.OleObject.document.all.item('LoginUserID',0); //找到登录用户名的输入框 o.value := 'TEST'; o := WebBrowser.oleobject.document.all.item('LoginPassword',0); //找到登录密码的输入框 o.value := 'TEST' WebBrowser.oleobject.document.Forms.Item(0, 0).submit; //第一个表单提交 { o :=WebBrowser.oleobject.document.all.item('Login',0); //或者用指定表单名称提交 o.Click; //点击操作,对其它对象也可同样操作 } end; 多个frames的输入,FrameIndex为Frame的序号 var o : Olevariant; begin //找到登录用户名的输入框 o := WebBrowser.oleobject.document.documentelement.document.frames.item(FrameIndex).document.all.item('LoginUserID',0); o.value := 'TEST'; //找到登录密码的输入框 o := WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.all.item('LoginPassword',0); o.value := 'TEST' //第一个表单提交 WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.Forms.Item(0, 0).submit; { //或者用指定表单名称提交 o :=WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex)..document.all.item('Login',0); o.Click; //点击操作,对其它对象也可同样操作 } end;
-----------------------------------------------------------------------------------------------------
document属性 {ihtmldocument2 方法:} write //写入 writeln //写入并换行 open //打开一个流,以收集 document.write 或 document.writeln 的输出 close //关闭并输出用 document.open 方法打开的流 clear //清空文档中所有元素, 可能暂时不支持 querycommandsupported //是否支持指定命令 querycommandenabled //指定命令是否有效 querycommandstate //是否设置了指定命令 querycommandindeterm //指定命令是否处于不确定状态 querycommandtext //命令 querycommandvalue //命令值 execcommand //执行命令 execcommandshowhelp //命令帮助信息 createelement //建立元素 elementfrompoint //指定坐标下的元素 createstylesheet //创建一个样式表 {ihtmldocument2 属性:} all //所有 html 元素的集合 images //所有 image 对象的集合 applets //所有 applet 对象的集合 links //所有 link 对象的集合 forms //所有 form 对象的集合 anchors //所有 anchor 对象的集合 scripts //所有 script 对象的集合 frames //所有 frame 对象的集合, 这应该和 window.frames 是一样的 embeds //所有 embed 对象的集合 plugins //所有 plugin 对象的集合 stylesheets //样式表集合 title //网页标题 body //body 对象 activeelement //当前具有输入焦点的元素 designmode //设计模式, 可选值: inherit on off selection //当前选择 readystate //页面读取状态: uninitialized、loading、loaded、interactive、completed linkcolor //链接的颜色 alinkcolor //活动链接的颜色 vlinkcolor //已访问过的链接的颜色 bgcolor //背景颜色 fgcolor //文本颜色 referrer //返回载入当前页面的页面的 url location //同 window.location lastmodified //返回文档最后修改的日期和时间 url //返回当前文档的 url domain //返回域名 cookie //返回文档相关的 cookie expando //可设置与获取的布尔值, 是否允许扩展 charset //获取文档的字符集名称 defaultcharset //获取浏览器默认的字符集名称 mimetype //文档类型 filesize //文档大小, 单位字节, 用字符串表示 filecreateddate //文档建立时间 ??? filemodifieddate //文档修改时间 ??? fileupdateddate //文档更新时间 ??? security //文档安全 protocol //传输协议 nameprop //文件标题, 好像同 title parentwindow //父窗口 script // {ihtmldocument2 事件:} onhelp //用 f1 获取帮助时 on*** //单击时 ondbl*** //双击时 on***down //鼠标点下时 on***up //鼠标抬起时 on***move //鼠标移动时 on***over //鼠标进入时 on***out //鼠标离开时 onkeypress //按键时 onkeyup //键按住时 onkeydown //键抬起时 onreadystatechange //状态改变时 onrowexit //当前数据源的数据将要发生变化时 onrowenter //当前数据源的数据发生变化并且有新的数据时 ondragstart //开始拖动时 onselectstart //开始选择时 onbeforeupdate //更新前 onafterupdate //更新后 onerrorupdate //更新错误时 {ihtmldocument3 方法:} recalc //重新获取文档中的全部动态属性 releasecapture //释放文档中对象的鼠标捕捉 {ihtmldocument3 属性:} createtextnode //建立文本 attachevent //绑定事件 detachevent //取消事件绑定 createdocumentfragment//创建新文档 getelementsbyname //返回带有指定 name 的对象集合 getelementbyid //返回指定 id 的第一个对象的引用 getelementsbytagname //返回指定标签的对象集合 documentelement //获取文档根部节点, 也就是 html 节点 uniqueid //获取对象的唯一标识符 dir // parentdocument // enabledownload baseurl //基础地址