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;
&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;
//调用网页脚本中的函数:procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.parentWindow.MB(); //HTML-Js//如需指定脚本语言, 需要:
WebBrowser1.OleObject.document.parentWindow.execScript('MB()','JavaScript'); //HTML-Js
end;
&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;amp;amp;gt;//判断网页及内部框架网页是否全部下载完毕procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
if   not(<span style="font-family: Arial, Helvetica, sans-serif;">WebBrowser1</span>.Busy)   then  ShowMessage('下载完毕');
end;//改变背景色或背景图片:
WebBrowser1.OleObject.document.body.bgcolor := '#FF0000';
WebBrowser1.OleObject.document.body.background := '...图片地址';
//操作有 ID 标签的对象:
var
s: string;
begin
s := WebBrowser1.OleObject.document.getElementByIdx_x('span1').innerText;
ShowMessage(s); //这是 span1 标签中的内容//或者:
s := WebBrowser1.OleObject.document.parentWindow.span1.innerText;
ShowMessage(s); //这是 span1 标签中的内容//隐藏它:
WebBrowser1.OleObject.document.parentWindow.span1.style.display := 'none';
end;
&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;
//获取网页源代码
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;
</pre><pre name="code" class="delphi"><span style="color: rgb(73, 73, 73); font-family: simsun; font-size: 14px; line-height: 21px;">Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterHtml);</span>//获取网页全部源代码
uses ActiveX;
var
ms: TMemoryStream;
begin
if not Assigned(WebBrowser1.Document) then Exit;
ms := TMemoryStream.Create;
(WebBrowser1.Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms), True);
ms.Position := 0;
Memo1.Lines.LoadFromStream(ms, TEncoding.UTF8);
// Memo1.Lines.LoadFromStream(ms, TEncoding.Default); {GB2312 等双字节}
ms.Free;
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;//从流中写入:
var
ms: TMemoryStream;
begin
ms := TMemoryStream.Create;
Memo1.Lines.SaveToStream(ms);
ms.Position := 0;
(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
ms.Free;
end;//禁止提示脚步错误
procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
WebBrowser1.Silent := True;
end;
</pre><pre name="code" class="delphi">方法二
TWebBrowser的OnDownloadComplete事件里面执行
(WebBrowser1.Document as IHTMLDocument2).parentWindow.execScript('window.οnerrοr=function(){return true}','JavaScript');</pre><pre name="code" class="delphi">//禁止弹出窗口
procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);
begin
Cancel := True;
end;
</pre><pre name="code" class="delphi">//使WebBrowser获得焦点TWebBrowser非常特殊,它从TWinControl继承来的SetFocus方法并不能使得它所twebbrows setfocu 方法包含的文档获得焦点,从而不能立即使用Internet Explorer本身具有得internet explor 使用快捷键,解决方法如下:<procedure TForm1.SetFocusToDoc;beginif WebBrowser1.Document <> nil thenwith WebBrowser1.Application as Ioleobject doDoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect);end;除此之外,我还找到一种更简单的方法,这里一并列除此之外这里并列出:if WebBrowser1.Document <> nil thenIHTMLWindow2(IHTMLDocument2(WebBrowser1.Document).ParentWindow).focus刚找到了更简单的方法,也许是最简单的:if WebBrowser1.Document <> nil thenIHTMLWindow4(WebBrowser1.Document).focus还有,需要判断文档是否获得焦点这样来做:if IHTMLWindow4(WebBrowser1.Document).hasfocus then
</pre><pre name="code" class="delphi">
//查找内容查找对话框可以在文档获得焦点的时候通过按键Ctrl-F对话框焦点按键来调出,程序中则调用IOleCommandTarget对象的成员函数Exec执行OLECMDID_FIND操作olecmdid 操作执行来调用,下面给出的方法是如何在程序中用代码来做出文下面方法如何字选择,即你可以自己设计查找对话框。VarDoc: IHtmlDocument2;TxtRange: IHtmlTxtRange;beginDoc :=WebBrowser1.Document as IHtmlDocument2;Doc.SelectAll;    //此处为简写,选择全部文档的方法selectal 方法文档请参见第三条命令操作//这句话尤为重要,因重要尤为为IHtmlTxtRange对象的方法能够操作的前提是//Document已经有一个文字选document 文字一个择区域。由于接着执行下面的语句,所以不会//看到文档全选的过程看到过程文档。TxtRange :=Doc.Selection.CreateRange as IHtmlTxtRange;TxtRange.FindText('Text to be searched',0.0);TxtRange.Select;end;还有,从Txt.Get_text可以得到当前选中的文字内容,某些得到文字当前时候是有用的。</pre><pre name="code" class="delphi">//点击“提交”按钮如同程序里每个窗体上有一个“缺省”按钮一样,Web一样按钮每个页面上的每个Form也有一个“缺省”按钮——即属性为“Submitsubmit form 按钮”的按钮,当用户按下回车键时就相当于鼠标单击了“Submitsubmit 回车键相当”。但是TWebBrowser似乎并不响应回车键,并且,即使把包含TWebBrowser的twebbrows 回车键似乎窗体的KeyPreview设为True,在窗体的KeyPress事件里还是不能截获用户向keypreview keypress 事件TWebBrowser发出的按键。我的解决办法是用ApplicatinEvents构件或者自己编写Tapplication对象的OnMessage事onmessag tapplic 构件件,在其中判断消息类型,对键盘消息做出响应。至于点至于响应判断击“提交”按钮,可以通过分析网页源代码的方法来实现源代码网页方法,不过我找到了更为简单快捷的方法,有两种,第一种是更为不过方法我自己想出来的,另一种是别人写的代码,这里都提供给自己这里出来大家,以做参考。A、用SendKeys函数向WebBrowser发送回车键在Delphi5光盘上的Info/Extras/SendKeys目录下有一个SndKey32.pas文件,sendkei delphi sndkei其中包含了两个函数SendKeys和AppActivate,我们可以用SendKeys函数来向WebBrowser发appactiv webbrows sendkei送回车键,我现在用的就是这个方法,使用很简单,在WebBrowserwebbrows 回车键使用获得焦点的情况下(不要求WebBrowser所包含的文档获得焦点),webbrows 焦点包含用一条语句即可:Sendkeys('~',true);// press RETURN keySendKeys函数的详细参数说明等,均包含在SndKey32.pas文件中sendkei sndkei 参数。B、在OnMessage事件中将接受到的键盘消息传递给WebBrowser。Procedure TForm1.ApplicationEvents1Message(var Msg: TMsg; var Handled: Boolean);{fixes the malfunction of some keys within webbrowser control}constStdKeys = [VK_TAB, VK_RETURN]; { standard keys }ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT]; { extended keys }fExtended = $01000000; { extended key flag }beginHandled := False;with Msg doif ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST)) and((wParam in StdKeys) or{$IFDEF VER120}(GetKeyState(VK_CONTROL) < 0) or {$ENDIF}(wParam in ExtKeys) and((lParam and fExtended) = fExtended)) thentryif IsChild(Handle, hWnd) then { handles all browser related messages }beginwith {$IFDEF VER120}Application_{$ELSE}Application{$ENDIF} asIOleInPlaceActiveObject doHandled := TranslateAccelerator(Msg) = S_OK;if not Handled thenbeginHandled := True;TranslateMessage(Msg);DispatchMessage(Msg);end;end;exceptend;end; // MessageHandler
</pre><pre name="code" class="delphi">
</pre><pre name="code" class="delphi">10、提取网页中所有链接这个方法来自大富翁论坛hopfield朋友的对一个问题的回答hopfield 自大问题,我本想自己试验,但总是没成功。Vardoc:IHTMLDocument2;all:IHTMLElementCollection;len,I:integer;item:OleVariant;begindoc:=WebBrowser1 .Document as IHTMLDocument2;all:=doc.Get_links;             //doc.Links亦可len:=all.length;for I:=0 to len-1 do beginitem:=all.item(I,varempty);        //EmpryParam亦可memo1.lines.add(item.href);end;end;
-----------------------------------------------------------------------------------
11、设置TWebBrowser的编码为什么我总是错过很多机会?其实早就该想到的,但为什么错过想到是一念之差,便即天壤之别。当时我要是肯再多考虑一下一念之差天壤之别当时,多试验一下,这就不会排到第11条了。下面给出一个下面试验一个函数,搞定,难以想象的简单。Procedure SetCharSet(AWebBrowser: TWebBrowser; ACharSet: String);varRefreshLevel: OleVariant;BeginIHTMLDocument2(AWebBrowser.Document).Set_CharSet(ACharSet);RefreshLevel :=7;              //这个7应该从这个应该注册表来,帮助有Bug。AWebBrowser.Refresh2(RefreshLevel);End;</pre><pre name="code" class="delphi">9.将页面中显示的内容全部选中,然后粘贴到Word文档中.
WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);//全选网页
WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT);     //复制网页
WordDocu.Range.Paste;            //word文档粘贴
WebBrowser1.ExecWB(OLECMDID_UNDO, OLECMDEXECOPT_DODEFAULT);    //取消全选
注:WebBrowser的Document属性值和WordDocument的Document属性值必须都不为nil.
10.如何解决网页不响应回车事件
public{ Public declarations }procedure MsgHandle(var Msg :TMsg; var Handled :Boolean);
end;
var
Form1: TForm1;
FOleInPlaceActiveObject :IOleInPlaceActiveObject;
implementation
{$R *.DFM}
procedure TForm1.MsgHandle(var Msg :TMsg; var Handled :Boolean);
var
iOIPAO :IOleInPlaceActiveObject;
Dispatch :IDispatch;
begin
if WebBrowser1 =nil then
begin
Handled :=False;
Exit;
end;
Handled :=(IsDialogMessage(WebBrowser1.Handle, Msg) =True);
if (Handled) and (not WebBrowser1.Busy) then
begin
if FOleInPlaceActiveObject =nil then
beginDispatch :=WebBrowser1.Application;if Dispatch <>nil thenbeginDispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);if iOIPAO <>nil thenFOleInPlaceActiveObject :=iOIPAO;end;
end;
end;
if FOleInPlaceActiveObject <>nil then
if ((Msg.message =WM_KEYDOWN) or (Msg.Message =WM_KEYUP)) and ((Msg.wParam =VK_BACK) or (Msg.wParam =VK_LEFT) or (Msg.wParam =VK_RIGHT)) then
elseFOleInPlaceActiveObject.TranslateAccelerator(Msg);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage :=MsgHandle;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FOleInPlaceActiveObject :=nil;
end;</pre><pre name="code" class="delphi">//在WebBrowser加载html页面完成后,在页面顶端插入HTML代码
procedure TForm1.Button1Click(Sender: TObject);
var
Range: IHTMLTxtRange;
begin
Range := ((WebBrowser1.Document as IHTMLDocument2).body asIHTMLBodyElement).createTextRange;
Range.collapse(False);
Range.pasteHTML('<br/><b>Hello!</b>');
end;
<p></p>

delphi中webbrowser的用法相关推荐

  1. delphi 中 delete的用法

    delete 是删除一个 字符串中的 某部分字符 用法是 delete(str,//被删除的字符串                index,//从第几个字符开始删除               co ...

  2. python面试题之介绍一下Python中webbrowser的用法

    所属网站分类: 面试经典 > python 作者:外星人入侵 链接: http://www.pythonheidong.com/blog/article/13/ 来源:python黑洞网 www ...

  3. 介绍一下Python中webbrowser的用法?

    webbrowser模块提供了一个高级接口来显示基于Web的文档,大部分情况下只需要简单的调用open()方法. webbrowser定义了如下的异常: exception webbrowser.Er ...

  4. delphi中pos的用法

    1.含义 pos(a,b)函数用法,取出子串a,在父串b中第一次出现的位置. 2.举例 pos('A','DDDAD'),则返回结果是4. 3.应用 nicez在strX字符串中是否存在的判断 if ...

  5. delphi中try的用法1

    try...except..end;查询异常 try edHH.Visible := False; ListBox.Visible := not edHH.Visible; listBox.Clear ...

  6. delphi中指针的用法

    大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上.因此,说指针是C语言的灵魂,一点都不为过.同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针.Basic不支 ...

  7. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  8. delphi中move函数的用法

    delphi中move函数的用法 -------------------------------------------------------------------------------- 20 ...

  9. delphi webbrowser 经常用法演示样例

    var Form : IHTMLFormElement ;D:IHTMLDocument2 ; beginwith WebBrowser1 do beginD := Document as IHTML ...

  10. Delphi中 StrToIntDef函数的用法

    Delphi中 StrToIntDef函数的用法: 比如我要判断一个文本框里输入的字符串能不能转换为integer类型,如果能,则返回转换后的整型数据,如果不能,则返回整数0,那么我就可以用strto ...

最新文章

  1. android 中改变按钮按下时的颜色
  2. 压缩SQL数据库日志-收缩SQL数据库日志-备份SQL数据库日志-删除SQL数据库日志
  3. 【机器学习入门笔记2:OpenCV图片读取和展示】20190203
  4. Python中基础数据类型(List、Tuple、Dict)的概念和用法
  5. T - Memory and Trident CodeForces - 712B( 注意:* ++ = 的优先级
  6. c语言字节强制对齐,C语言的那些小秘密之字节对齐
  7. 【BZOJ2337】XOR和路径,概率期望DP+高斯消元
  8. 最小生成树prim、
  9. win10远程电脑连接
  10. spring cloud微服务分布式云架构简介
  11. Linux之centos包管理rpm、yum、tar
  12. msdev.exe 应用程序错误
  13. Logit模型拟合实战案例(Biogeme)
  14. 要做好云计算所需要的成本,主要分为哪六大成本?
  15. Scrum板与Kanban如何抉择?bnartvjxv板与按照weypxh
  16. 【互动媒体】”十二个一“的文艺创作的文本分析与可视化
  17. cygwin+编译php,Windows 下:cygwin编译 HTS 安装
  18. 为什么要分库分表?一个业务场景来理顺它!
  19. freemarker如何获取当前时间或者时间戳?
  20. 打码平台php源码,打码平台 远程打码 实例源码

热门文章

  1. 怎么在Chrome浏览器中插入IDM软件的扩展插件?
  2. 视频录制工具OBS选择区域录制
  3. java实现excel、word在线预览
  4. 威纶触摸屏如何设置数值输入元件的上下限和用户密码登录?
  5. 获取汉字的拼音简码方法(仅适用于国标一级汉字)
  6. html media设置自适应屏幕用法,css使用@media响应式适配各种屏幕的方法示例
  7. CFD后处理出图软件Tecplot的操作技巧(未完待续)
  8. 雷林鹏分享Node.js Buffer(缓冲区)
  9. 小型项目的微服务架构指南
  10. 大学生竞赛管理系统项目