delphi TWebBrowser 使用

来源:互联网 发布:绿盾软件 编辑:程序博客网 时间:2024/05/16 20:27
1.前进,后退,刷新


self.WebBrowser1.GoBackself.WebBrowser1.GoForwardself.WebBrowser1.Refresh


2.捕捉NewWindow2事件,即新开窗口事件

procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); varNewWindow: TForm2;begin NewWindow:= TForm2.Create(nil); 
         NewWindow.Show;ppDisp:= NewWindow.Webbrowser1.DefaultDispatch;end;

值得一题的是该方法不能获得新开窗口的URL,退一步的方法只能是等到在新的Webbrowser中触发BeforeNavigate2事件判断了


3.网页中存在iframe时判断页面是否下载结束
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); beginif WebBrowser1.Application = pDisp then showmessage('页面已全部下载完毕') end;

4. 执行网页中的函数

tmpf := 'currID = getNextID(currID)'+#13#10;Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmpf,'JavaScript');










一个不错的例子:

  1. WebBrowser1.GoHome; //到浏览器默认主页  
  2. WebBrowser1.Refresh; //刷新  
  3. WebBrowser1.GoBack; //后退  
  4. WebBrowser1.GoForward; //前进  
  5. WebBrowser1.Navigate('...'); //打开指定页面  
  6. WebBrowser1.Navigate('about:blank'); //打开空页面  
  7.   
  8. //打开空页面, 并写入...  
  9. WebBrowser1.Navigate('about:<head><title>标题</title><body>页面内容</body>');  
  10.   
  11. //读取网页脚本中的变量:  
  12.   
  13. procedure TForm1.Button1Click(Sender: TObject);  
  14. var  
  15. s: string;  
  16. i: Integer;  
  17. begin  
  18.   s := WebBrowser1.OleObject.document.Script.str;  
  19.   i := WebBrowser1.OleObject.document.Script.num;  
  20.   ShowMessage(s); //Hello  
  21.   ShowMessage(IntToStr(i)); //99  
  22.   
  23.   //也可以这样读:  
  24.   s := WebBrowser1.OleObject.document.parentWindow.str;  
  25.   i := WebBrowser1.OleObject.document.parentWindow.num;  
  26.   ShowMessage(s); //Hello  
  27.   ShowMessage(IntToStr(i)); //99  
  28. end;  
  29. &amp;lt;br&amp;gt;假如网页中有这样的语句:&amp;lt;br&amp;gt;&amp;amp;amp;lt;script&amp;amp;amp;gt;&amp;lt;br&amp;gt;var&amp;lt;br&amp;gt; str = &amp;quot;Hello&amp;quot;;&amp;lt;br&amp;gt; i = 99;&amp;lt;br&amp;gt;&amp;amp;amp;lt;/script&amp;amp;amp;gt;  
  30.   
  31. //调用网页脚本中的函数:  
  32.   
  33. procedure TForm1.Button1Click(Sender: TObject);  
  34. begin  
  35.   WebBrowser1.OleObject.document.parentWindow.MB(); //HTML-Js  
  36.   
  37.   //如需指定脚本语言, 需要:  
  38.   WebBrowser1.OleObject.document.parentWindow.execScript('MB()','JavaScript'); //HTML-Js  
  39. end;  
  40. &amp;lt;br&amp;gt;假如有这样的脚本:&amp;lt;br&amp;gt;&amp;amp;amp;lt;script&amp;amp;amp;gt;&amp;lt;br&amp;gt;function MB(){ &amp;lt;br&amp;gt; alert('HTML-Js');&amp;lt;br&amp;gt;}&amp;lt;br&amp;gt;&amp;amp;amp;lt;/script&amp;  
  41.   
  42. //判断网页及内部框架网页是否全部下载完毕  
  43.   
  44. procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;  
  45.   const pDisp: IDispatch; var URL: OleVariant);  
  46. begin  
  47.   if WebBrowser1.Application = pDisp then  
  48.   begin  
  49.     Text := '网页下载完毕!';  
  50.   end;  
  51. end;  
  52.   
  53. //改变背景色或背景图片:  
  54. WebBrowser1.OleObject.document.body.bgcolor := '#FF0000';  
  55. WebBrowser1.OleObject.document.body.background := '...图片地址';  
  56.   
  57. //操作有 ID 标签的对象:  
  58. var  
  59.   s: string;  
  60. begin  
  61.   s := WebBrowser1.OleObject.document.getElementByIdx_x('span1').innerText;  
  62.   ShowMessage(s); //这是 span1 标签中的内容  
  63.   
  64.   //或者:  
  65.   s := WebBrowser1.OleObject.document.parentWindow.span1.innerText;  
  66.   ShowMessage(s); //这是 span1 标签中的内容  
  67.   
  68.   //隐藏它:  
  69.   WebBrowser1.OleObject.document.parentWindow.span1.style.display := 'none';  
  70. end;  
  71. &amp;lt;br&amp;gt;假如网页中有这样的内容:&amp;lt;br&amp;gt;&amp;amp;amp;lt;span id=span1&amp;amp;amp;gt;这是 span1 标签中的内容&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;lt;br&amp;gt;  
  72.   
  73. //获取网页源代码  
  74. var  
  75.   s: string;  
  76. begin  
  77.   s := WebBrowser1.OleObject.document.body.innerHTML; //body内的所有代码  
  78.   s := WebBrowser1.OleObject.document.body.outerHTML; //body内的所有代码, 包含body标签  
  79.   s := WebBrowser1.OleObject.document.documentElement.innerHTML; //html内的所有代码  
  80. end;  
  81.   
  82. //获取网页全部源代码  
  83. uses ActiveX;  
  84. var  
  85.   ms: TMemoryStream;  
  86. begin  
  87.   if not Assigned(WebBrowser1.Document) then Exit;  
  88.   ms := TMemoryStream.Create;  
  89.   (WebBrowser1.Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms), True);  
  90.   ms.Position := 0;  
  91.   Memo1.Lines.LoadFromStream(ms, TEncoding.UTF8);  
  92.   // Memo1.Lines.LoadFromStream(ms, TEncoding.Default); {GB2312 等双字节}  
  93.   ms.Free;  
  94. end;  
  95.   
  96. //WebBrowser 中的右键菜单  
  97.   
  98. //先要添加ApplicationEvents1,指定其Message事件  
  99.   
  100. //屏蔽右键菜单  
  101. procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);  
  102. begin  
  103.   with Msg do  
  104.   begin  
  105.     if not IsChild(WebBrowser1.Handle, hWnd) then Exit;  
  106.       Handled := (message = WM_RBUTTONDOWN) or (message = WM_RBUTTONUP) or (message = WM_CONTEXTMENU);  
  107.   end;  
  108. end;  
  109.   
  110. //替换右键菜单  
  111. procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);  
  112. var mPoint: TPoint;  
  113. begin  
  114.   if IsChild(WebBrowser1.Handle, Msg.Hwnd) and  
  115.   ((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)) then  
  116.   begin  
  117.     GetCursorPos(mPoint); //得到光标位置  
  118.     PopupMenu1.Popup(mPoint.X, mPoint.Y); //弹出popupmenu1的菜单  
  119.     Handled:=True;  
  120.   end;  
  121. end;  
  122.   
  123. //新页面写入  
  124. begin  
  125.   WebBrowser1.Navigate('about:blank');  
  126.   WebBrowser1.OleObject.Document.Writeln('ok');  
  127. end;  
  128.   
  129. //从流中写入:  
  130. var  
  131. ms: TMemoryStream;  
  132. begin  
  133.   ms := TMemoryStream.Create;  
  134.   Memo1.Lines.SaveToStream(ms);  
  135.   ms.Position := 0;  
  136.   (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));  
  137.   ms.Free;  
  138. end;  
  139.   
  140. //禁止提示脚步错误  
  141. procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;  
  142. const pDisp: IDispatch; var URL: OleVariant);  
  143. begin  
  144.   WebBrowser1.Silent := True;  
  145. end;  
  146.   
  147. //禁止弹出窗口  
  148. procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch;  
  149. var Cancel: WordBool);  
  150. begin  
  151.   Cancel := True;  
  152. end;  


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上海车子卖了etc怎么办 车卖了etc设备怎么办 车卖了etc没摘怎么办 交通信息卡丢了怎么办 多囊卵巢无排卵怎么办 卵巢腹镜手术后一直出汗怎么办 双侧卵巢多囊怎么办 备孕子宫内膜厚怎么办 有成熟卵泡不破怎么办 卵泡不排萎缩了怎么办 卵泡8mm一直不长怎么办 卵泡已经长到28x19mm怎么办 多囊卵巢卵泡长不大怎么办 优势卵泡19不排怎么办 多囊卵泡不排卵怎么办 卵泡两天长2mm怎么办 子宫小43*38*26怎么办 优势卵泡打破卵针后并不破怎么办 ktv禁止自带酒水怎么办 记名西瓜卡丢了怎么办 日本电车卡丢了怎么办 网贷暂时没钱还怎么办 华泰倒闭了汽车怎么办 猫躲起来找不到了怎么办 狗生病了不吃饭怎么办 猫猫托运后害怕怎么办 新来的猫害怕怎么办 升工资老板不公平对待怎么办 自酿啤酒苦味重怎么办 自酿啤酒酸味重怎么办 微信电话费充错了怎么办 支付宝电话费充错了怎么办 在淘宝上充错电话费了怎么办 话费1000充错了怎么办 东西掉在地铁上怎么办 高铁安检丢东西怎么办 东西掉成都地铁上怎么办 东西掉在成都地铁上怎么办 成都地铁上掉东西了怎么办 地铁站丢了东西怎么办 在地铁站丢了东西怎么办