WebBrowser

WebBrowser控件属性:


1、Application
      如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,程序将返回WebBrowser控件的自动化对象
2、Parent
       返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿主或IE窗口
3、Containe
       返回WebBrowser控件容器的自动化对象。通常该值与Parent属性返回的值相同
4、Document
       为活动的文档返回自动化对象。如果HTML当前正被显示在WebBrowser中,则Document属性提供对DHTML Object Model的访问途径
5、TopLevelContainer
       返回一个Boolean值,表明IE是否是WebBrowser控件顶层容器,是就返回true
6、Type 
       返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word Document
7、Left
       返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离
8、Top 
       返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离
9、Width
       返回或设置WebBrowser窗口的宽度,以像素为单位
10、Height 
       返回或设置WebBrowser窗口的高度,以像素为单位
11、LocationName
       返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹 ,就是文件或文件夹的名称
12、LocationURL
       返回WebBrowser当前正在显示的资源的URL
13、Busy 
       返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作<br/>

 


WebBrowser控件的事件:

<br/>

1、BeforeNavigate2 导航发生前激发,刷新时不激发

2、CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭Back和Forward菜单项或按钮

3、DocumentComplete 当整个文档完成是激发,刷新页面不激发

4、DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件

5、DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件

6、 NavigateComplete2 导航完成后激发,刷新时不激发 NewWindow2 在创建新窗口以前激发

7、OnFullScreen 当FullScreen属性改变时激发。该事件采用VARIENT_BOOL的一个输入参数来指示IE是全屏显示方式(VARIENT_TRUE)还是普通显 示方式(VARIENT_FALSE)

8、OnMenuBar 改变MenuBar的属性时激发,标示参数是VARIENT_BOOL类型的。VARIANT_TRUE是可见,VARIANT_ FALSE是隐藏

9、OnQuit 无论是用户关闭浏览器还是开发者调用Quit方法,当IE退出时就会激发

10、 OnStatusBar 与OnMenuBar调用方法相同,标示状态栏是否可见。

11、 OnToolBar 调用方法同上,标示工具栏是否可见。

12、 OnVisible 控制窗口的可见或隐藏,也使用一个VARIENT_BOOL类型的参数

13、StatusTextChange 如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏

14、TitleChange 网页标题有效或改变时激发

 

WebBrowser控件的函数:

1、 GoBack 相当于IE的”后退”按钮,使你在当前历史列表中后退一项

2、GoForward 相当于IE的”前进”按钮,使你在当前历史列表中前进一项

3、 GoHome 相当于IE的”主页”按钮,连接用户默认的主页

4、GoSearch 相当于IE的”搜索”按钮,连接用户默认的搜索页面

5、 Navigate 连接到指定的URL

6、Refresh 刷新当前页面

7、Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,该表定义在ExDisp.h中,可以指定的不同值 如下: REFRESH_NORMAL 执行简单的刷新,不将HTTP pragma: no-cache头发送给服务器 REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新 REFRESH_CONTINUE 仅作内部使用 REFRESH_COMPLETELY 将包含pragma: no-cache头的请求发送到服务器 <br><br/>

例子程序

1、WebBrowser1.OleObject.document.all.item('btnName').click;//根据页面中按钮的名称执行其点击事件

2、WebBrowser1.OleObject.document.getElementByID('btnID').click;//根据按钮ID点击

3、WebBrowser1.OleObject.document.getElementsByTagName('input').item(0).click;//根据按钮索引点击

4、WebBrowser1.OleObject.document.all.item('userName').value:=userName;//修改文本框信息,也可用ID,同上

5、ShellExecute(0,'open','www.baidu.com',nil,nil,SW_SHOW);//为浏览器打开一个网页

 

1、去滚动条

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
    WebBrowser1.oleobject.Document.body.style.overflow:= 'hidden';
end;

2、滚屏

复制代码
//uses MSHTML;
var
    a: IHTMLDocument2;
begin
    y:=y+20;   //加减进行上下滚动
    a :=WebBrowser1.Document as IHTMLDocument2;
    a.Get_ParentWindow.Scroll(x,y);
end;
复制代码

3、去边框

WebBrowser1.OleObject.Document.Body.style.border := 'none';
WebBrowser1.OleObject.Document.Body.Style.margin := '0px';

 




这几天,接触到在delphi中内嵌网页,用delphi7自带的TWebBrowser控件,显示的内容与本机IE8显示的不一样,但是跟装IE8之前的IE6显示一个效果。现在赶脚是下面两个原因中的一个:

1.Navigate这个方法用的有点问题,里面的参数不同及Navigate2等不同方法,调用的IE内核版本不同

2.这个自带的控件用着不爽,直接换一个第三方控件

对于第一点,找了半天冒发现什么,赶紧转换思路,于是找到了

EmbeddedWB这个第三方控件。。。

下载址:http://www.delphifans.com/SoftView/SoftView_2705.html或http://d.download.csdn.net/detail/randb/631380
delphi7中安装方法:
http://salomi.blog.51cto.com/389282/125954
另附几个我为了解决这个问题赶脚有用的网址:
Delphi第三方控件EmbeddedWB的使用方法:
http://hi.baidu.com/cyrist/blog/item/e8782ea4c64919ec9052eedc.html
一个具有参考价值的帖子:
http://topic.csdn.net/u/20120310/12/32b22ac0-8e5f-4f9f-9083-b8c7aaa52380.html?seed=587680286&r=77849641#r_77849641
如何用Delphi调用IE打开网页:http://blog.csdn.net/mrwu9902/article/details/4954555
关于调用其他浏览器内核的控件(我安装了使用火狐内核的Mozilla ActiveX控件,但是代码调用的时候,报错了,没怎么管了,有兴趣的同仁可以研究下):

http://topic.csdn.net/u/20090527/09/58387179-3fe8-49d7-9d95-9d9c00767e65.html

http://topic.csdn.net/u/20120215/17/8501dc38-742e-47cb-bad1-35ef2a7bd0cc.html
http://delphi.about.com/b/2005/01/15/using-firefox-instead-of-twebbrowser-in-delphi-applications.htm
http://www.paranoia.clara.net/articles/taming_the_lizard_with_delphi.html
http://www.adamlock.com/mozilla/
做了这些功课,希望该问题下周一能够顺利解决。。。。。。
//2012.03.25更新一下//
最近一段时间没时间关注这个问题了,不晓得那个网页是里面用了脚本的原因还是其他什么原因,唉,反正是结果目前还没得到我想要的
1.EmbeddedWB与TWebBrowser实现效果一样,跟IE8效果不一样,有一种说法是“这两个控件调用的不是本机的IE内核,在delphi7中而是调用的IE6内核”。。。自己目前还不清楚。。。
2.谷歌控件 Delphi Chromium Embedded:http://code.google.com/p/delphichromiumembedded/
这个装好了以后,要把exe的输出路径设置到DEF/win32/bin,如果修改源代码,貌似是可以不用总是把生成的exe放那个目录的,没实现我想要的效果,就没研究这个问题了。。。
这个用了之后,打开那个网页的时候,半天没反应,窗口好像死在那了。。。有哪位高手看到这,知道原因的,还请留言指点几句。。。
3.还有GeckoBrowser for Delphi这个控件,还没研究出来怎么用这玩意。。。
4.这一种自己可以改变下IE浏览器窗口的显示
[delphi]  view plain copy
  1. procedure OpenInIE(aURL: string);  
  2.     var IE: Variant;  
  3. begin  
  4.     IE := CreateOleObject('InternetExplorer.Application');  
  5.   
  6.     IE.Visible := true//可见  
  7.     IE.left := 0;  
  8.     IE.top := 0;  
  9.     IE.height := 1050//高度  
  10.     IE.width := 1680//宽度  
  11.     IE.menubar := 0//取消菜单栏  
  12.     IE.addressbar := 0//取消地址栏  
  13.     IE.toolbar := 0//取消工具栏  
  14.     IE.statusbar := 0//取消状态栏  
  15.     IE.resizable := 0//不允许用户改变窗口大小  
  16.     IE.Navigate(aURL);  
  17. end;  
5.
[delphi]  view plain copy
  1. procedure TForm1.Button2Click(Sender: TObject);  
  2. begin  
  3.   ShellExecute(Handle, 'open''IExplore.EXE''http://www.baidu.com'nil, SW_SHOWNORMAL);  
  4. end;  

6.
[delphi]  view plain copy
  1. procedure TIEShowFrm.FormCreate(Sender: TObject);  
  2. var  
  3.   Flags: OLEVariant;  
  4. begin  
  5.   //WebBrowser1.Navigate(WideString('http://www.baidu.com'), Flags, Flags, Flags, Flags);  
  6.   WebBrowser1.Navigate('http://www.baidu.com');  
  7. end;  

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页