zoukankan      html  css  js  c++  java
  • WebBrowser 操作记要

    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;
    
    假如网页中有这样的语句: <script> var str = "Hello"; i = 99; </script>
    //调用网页脚本中的函数:
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      WebBrowser1.OleObject.document.parentWindow.MB(); //HTML-Js
    
      //如需指定脚本语言, 需要:
      WebBrowser1.OleObject.document.parentWindow.execScript('MB()','JavaScript'); //HTML-Js
    end;
    
    假如有这样的脚本: <script> function MB(){ alert('HTML-Js'); } </script>
    //判断网页及内部框架网页是否全部下载完毕
    
    procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    begin
      if WebBrowser1.Application = pDisp then
      begin
        Text := '网页下载完毕!';
      end;
    end;
    

    //改变背景色或背景图片:
    WebBrowser1.OleObject.document.body.bgcolor := '#FF0000';
    WebBrowser1.OleObject.document.body.background := '...图片地址';
    
    //操作有 ID 标签的对象:
    var
      s: string;
    begin
      s := WebBrowser1.OleObject.document.getElementById('span1').innerText;
      ShowMessage(s);  //这是 span1 标签中的内容
    
      //或者:
      s := WebBrowser1.OleObject.document.parentWindow.span1.innerText;
      ShowMessage(s);  //这是 span1 标签中的内容
    
      //隐藏它:
      WebBrowser1.OleObject.document.parentWindow.span1.style.display := 'none';
    end;
    
    假如网页中有这样的内容: <span id=span1>这是 span1 标签中的内容</span>
    
    //获取网页源代码
    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;
    
    //获取网页全部源代码
    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;
    
    //禁止弹出窗口
    procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
      var Cancel: WordBool);
    begin
      Cancel := True;
    end;
    

    模拟点击网页中的按钮

    操作链接

    支持高版本 ie:
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    //待续... 
    
  • 相关阅读:
    17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication
    17.1.2 Replication Formats
    Setting the Master Configuration on the Slave
    17.1.1.9 Introducing Additional Slaves to an Existing Replication Environment
    17.1.1.8 Setting Up Replication with Existing Data
    17.1.1.7 Setting Up Replication with New Master and Slaves
    17.1.1.6 Creating a Data Snapshot Using Raw Data Files
    列出display的值,并说明它们的作用
    CSS设置DIV居中
    CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?
  • 原文地址:https://www.cnblogs.com/del/p/993840.html
Copyright © 2011-2022 走看看