delphi TWebBrowser 使用

1.前进,后退,刷新


	self.WebBrowser1.GoBack
	self.WebBrowser1.GoForward
	self.WebBrowser1.Refresh


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

procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); 
var
	NewWindow: 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);
 begin

	if 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:标题页面内容');  
  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. <br>假如网页中有这样的语句:<br><script><br>var<br> str = "Hello";<br> i = 99;<br></script>  
  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. <br>假如有这样的脚本:<br><script><br>function MB(){ <br> alert('HTML-Js');<br>}<br></script&  
  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. <br>假如网页中有这样的内容:<br><span id=span1>这是 span1 标签中的内容</span><br>  
  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;  


你可能感兴趣的:(delphi)