`

Webbrowser技巧

阅读更多
htm中<script> var currID=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;
      for i:=0 to frames.length do
      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 :='<body bgcolor=222222 align=center><br><p align=center><font size=+2 color=#FFFFFF>扬帆博客 http://wesohon.com</font></p>';
    SetNoteStr :=SetNoteStr+'<br><p align=center><font size=+2 color=#FFFFFF>点击左边按钮可查看对应图片</font></p>';
    StrStream:=TStringStream.Create(SetNoteStr);
    WebBrowser1.Navigate('about:blank');
    try
      StrStream.Position:=0;
      ( WebBrowser1.Document as IPersistStreamInit).Load(TStreamadapter.Create(StrStream));
    finally
      StrStream.Free;
    end;
8.前进,后退,刷新    
self.WebBrowser1.GoBack    
self.WebBrowser1.GoForward     
self.WebBrowser1.Refresh

9.捕捉NewWindow2事件,即新开窗口事件    
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
    var ppDisp: IDispatch; var Cancel: WordBool);
var
    NewWindow: TForm2;
begin
    //exit;
    NewWindow:= TForm2.Create(nil);
    NewWindow.Show;
    ppDisp:= NewWindow.Webbrowser1.DefaultDispatch;
end;    值得一题的是该方法不能获得新开窗口的URL,退一步的方法只能是等到在新的Webbrowser中触发BeforeNavigate2事件判断了

10.网页中存在iframe时判断页面是否下载结束      
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
   begin    
   if WebBrowser1.Application = pDisp then showmessage('页面已全部下载完毕')end;
   说明一下,每个iframe下载完毕都会触发DocumentComplete事件,所以一个页面在真正下载完毕前可能被触发多次

11. 获取网页中图片//使用DOM模型,什么都能读下来   
   uses    MSHtml,    ActiveX;       
   var  
           html_doc:    IHTMLDocument2;  
           doc_all :    IHtmlElementCollection;  
           vI      :    IHtmlImgElement;  
   begin  
           html_doc    :=    WebBrowser1.Document    as    IHTMLDocument2;  
           doc_all     :=    html_doc.images;  
           for    I    :=    0    to    doc_all.length    -    1      do  
           begin  
                   vI  :=    doc_all.item(I,    EMPTYPARAM)    as    IHtmlImgElement;  
                   //读取vI.src  
                   Memo1.Lines.Add(vI.src);  
           end;  
   end;12. 下面函数获得ISomeControl接口var  
           html_doc:    IHTMLDocument2;  
           doc_all :    IHtmlElementCollection;  
           vI      :    IHtmlElement;  
           vD      :    IDispatch;  
   begin  
           html_doc    :=    WebBrowser1.Document    as    IHTMLDocument2;  
           doc_all     :=    html_doc.all;  
           for    I    :=    0    to    doc_all.length    -    1      do  
           begin  
                   vI  :=    doc_all.item(I,    EMPTYPARAM)    as    IHtmlElement;  
                   if    vI.tagName='OBJECT'    then  
                   begin  
                           //读取Classid  
                           Memo1.Lines.Add((vI    as    IHtmlObjectElement).classid);  
                           //读取包容的对象接口  
                           vD    :=    (vI    as      IHtmlObjectElement).object_;  
                           ...  
                   end;  
           end;  
   end;
分享到:
评论

相关推荐

    VB调用webbrowser技巧集

    Webbrowser控件史上最强技巧全集 VB调用webbrowser技巧集

    VB中WEBBROWSER技巧大全(DOC文档)

    ### VB中WEBBROWSER技巧大全知识点详解 #### 一、WebBrowser的方法、属性与事件 WebBrowser 控件是Visual Basic中用于浏览和交互HTML文档的强大工具。它支持一系列的方法、属性和事件,允许开发者实现复杂的网页...

    WebBrowser控件技巧集

    WebBrowser控件是Windows应用程序开发中的一个重要组件,它允许开发者在桌面应用中嵌入Web浏览功能。..."调用WebBrowser技巧集.doc"文档很可能是详细介绍这些技巧的参考资料,值得仔细阅读和学习。

    IE WebBrowser编程技巧

    IE_WebBrowser编程技巧 修改WebBrowser的header信息? Delphi查看WebBrowser提交之前的数据头 用TWebBrowser组件在DELPHI中POST数据和取得网页源文件 在 WebBrowser 中直接载入流,不通过文件 判断下载网页成功 ...

    vb6_Webbrowser控件使用技巧

    ### vb6_Webbrowser控件使用技巧 #### 一、获得浏览器信息 在Visual Basic 6.0中,可以通过Webbrowser控件获取浏览器的相关信息。具体实现方式如下: 1. **加载网页**: ```vb Private Sub Command1_Click() ...

    WebBrowser1技巧的软件源码

    在"WebBrowser1技巧的软件源码"中,我们可以学习到一些关于如何更有效地利用WebBrowser1控件的方法。 首先,按字母或数字顺序排列列表框中的列表项是一种常见的需求,特别是在用户界面设计中。在VB中,你可以通过...

    WebBrowser控件使用技巧分享

    【WebBrowser控件使用技巧详解】 WebBrowser控件是.NET框架中用于在应用程序内部嵌入网页浏览功能的一个组件。在开发Windows Forms或WPF应用时,我们常常利用它来实现与网页的交互。以下是一些关于WebBrowser控件的...

    Delphi中WebBrowser的使用技巧汇总

    Delphi中WebBrowser的使用技巧汇总,对使用webbrowser开发很有帮助。

    VB控件WEBBROWSER基本及进阶技巧合集.doc

    以下是一些关于WebBrowser控件的基本及进阶技巧: 1. **WebBrowser的方法、属性、事件**: - **方法**:如Navigate()用于导航到指定URL,GoBack()和GoForward()实现前进和后退,Stop()用于停止当前加载的页面。 -...

    delphi操作webbrowser的几个技巧

    标题与描述均提及了“Delphi操作WebBrowser的几个技巧”,这一主题聚焦于Delphi编程语言如何有效地控制和交互WebBrowser组件,实现诸如获取网页变量、执行网页函数、设置网页背景、调用网页对象等高级功能。...

    C#WebBrowser页面与Winform交互技巧

    ### C# WebBrowser页面与Winform交互技巧 在开发基于Windows平台的应用程序时,经常需要使用WebBrowser控件来在Winform应用程序中嵌入网页内容,并且可能需要与这些网页内容进行交云。本文将详细介绍如何在C#中实现...

    WebBrowser

    - **事件处理技巧**:确保在正确的线程上处理事件,并利用`Dispatcher`对象进行异步操作。 - **代码调试**:使用`WebBrowser`控件的`InvokeScript`方法调用JavaScript函数,以检查网页的运行状态。 5. **...

    强制新窗口只在webBrowser打开

    "强制新窗口只在webBrowser打开"的技巧就是解决这个问题的关键。 首先,我们需要理解WebBrowser控件的基本属性和事件。WebBrowser控件有两个重要的事件:`DocumentCompleted`和`NewWindow3`。`DocumentCompleted`...

    C#web打印之WebBrowser

    这需要一定的HTML和C#编程技巧,以及对数据库操作的理解。 另外,描述中提到了"xys_log.LDF"和"xys.mdf",这两个文件看起来像是SQL Server的数据库文件(日志文件和主数据文件)。在实际应用中,这些文件可能用于...

    WebBrowser2互联网浏览器使用

    在IT领域,WebBrowser2控件是一个常用的工具,它...而`WebBrowser2_veryhuo.com.rar`可能包含的是相关的源码或其他资源,可以从中学到更多实际应用技巧。学习这些示例,将有助于加深对WebBrowser2控件的理解和应用。

    WebBrowser与WinForm交互技巧

    WebBrowser与WinForm交互技巧 在.NET 2.0中,WebBrowser控件提供了一种方便的方式来在WinForm中嵌入Web页面,并且可以与Web页面进行交互。在本文中,我们将通过几个简单的实例,展示如何在WebBrowser与WinForm之间...

Global site tag (gtag.js) - Google Analytics