预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

delphi操作webbrowser的几个技巧 1.获得网页中变量值 htm中<script>varcurrID=123</script> 程序中可以这么调用id:=Form1.WebBrowser1.OleObject.Document.script.currID 值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个异常事件,即变量currID不存在 2.执行网页中的函数 tmp:='currID=getNextID(currID)'+#13#10; Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmp,'JavaScript'); 调用函数的方法就是execScript接口,同样,如果函数不存在,或者运行错误也会触发脚本错误异常 3.设置网页背景 背景图片WebBrowser1.OleObject.Document.body.background:='http://seelearn.com/bg.gif' 背景颜色WebBrowser1.OleObject.Document.body.bgcolor:='#eeeeee' 4.调用网页中已知对象 src:=WebBrowser1.OleObject.Document.getElementByID('img1').src 该方法其实就是javascript中的getElementByID 5.获取页面中所有的frame 使用DHTML。 frames:=wb.OleObject.document.frames; fori:=0toframes.lengthdo memo1.lines.Add(frames[i].document.body.innerHTML); 6.BorderStyle=bsNone后Webbrowser会被重新初始化 这是一个让人很意外的一个问题,Delphi在窗口控件的控制方面做得非常好,很少出现这种BUG 根据分析,出现这个现象有很多情况改变FormStyle也会出现;如果webbrowser.parent由panel1改到panel2.也会导致webbrowser重新 初始化。 7.直接向Webbrowser中写入html代码,不需要Navigate到实际存在的文件 var StrStream:TStringStream; SetNoteStr:string; begin SetNoteStr:='<bodybgcolor=222222align=center><br><palign=center><fontsize=+2color=#FFFFFF>点点博客http://seelearn.com</font></p>'; SetNoteStr:=SetNoteStr+'<br><palign=center><fontsize=+2color=#FFFFFF>点击左边按钮可查看对应图片</font></p>'; StrStream:=TStringStream.Create(SetNoteStr); WebBrowser1.Navigate('about:blank'); try StrStream.Position:=0; (WebBrowser1.DocumentasIPersistStreamInit).Load(TStreamadapter.Create(StrStream)); finally StrStream.Free; end; end; 8.前进,后退,刷新 self.WebBrowser1.GoBack self.WebBrowser1.GoForward self.WebBrowser1.Refresh 9.捕捉NewWindow2事件,即新开窗口事件 procedureTForm1.WebBrowser1NewWindow2(Sender:TObject; varppDisp:IDispatch;varCancel:WordBool); var NewWindow:TForm2; begin //exit; NewWindow:=TForm2.Create(nil); NewWindow.Show; ppDisp:=NewWindow.Webbrowser1.DefaultDispatch; end; 值得一题的是该方法不能获得新开窗口的URL,退一步的方法只能是等到在新的Webbrowser中触发BeforeNavigate2事件判断了 10.网页中存在iframe时判断页面是否下载结束 procedureTForm1.WebBro