网页代码:<SELECT id=fy onchange=TouchRefresh(1) name=fy> <OPTION selected value=15>每頁顯示15筆</OPTION> <OPTION value=30>每頁顯示30筆</OPTION> <OPTION value=60>每頁顯示60筆</OPTION></SELECT>

1.webbrowser执行网页中的JS函数

如果要执行TouchRefresh(1)函数:

webbrowser1.oleobject.document.parentwindow.ExecScript(‘TouchRefresh(1)’,'Javascript');

webbrowser执行自己的JS函数:

  wb1.OleObject.document.parentwindow.ExecScript('alert(''自定义函数');','javascript');

方法2:

wb1.Navigate('javascript:alert(''执行成功!'');');

2.webbrowser选择下拉列表

var

ole : olevariant

begin

ole := webbrowser1.oleobject.document.GetElementByID('fy');

ole.value := 60;  //下拉框用value,复选框和多选框用checked:='true'

ole.onchange;  //调用onchange事件

end;

3.webbrowser按照Form提交(针对提交按钮无id和name的情况)

网页代码:

<FORM id=loginForm onsubmit="return validate_form()" method=post action=/pass/serviceLoginAuth2><INPUT id=passToken type=hidden name=passToken>

<INPUT style="DISPLAY: none" id=user class="input_kuang item errortip" name=user>

<INPUT style="DISPLAY: none" id=pwd class="input_kuang item errortip" value="" type=password name=pwd>

<DIV class="sub_login flt_l"><INPUT class=no_bg value=登入 type=submit></DIV>

提交方法:

webbrowser1.OleObject.document.forms.item('loginForm').submit;

4.webbrowser去掉滚动条

在download事件中:

  webbrowser1.oleobject.Document.body.Scroll := 'no';

  webbrowser1.oleobject.Document.documentElement.style.overflow := 'hidden';

webbrowser控制滚动条滚动:

    webbrowser1.OleObject.document.parentwindow.scrollby(0,100);//第一个参数横向,第二个竖向  scrollby滚动多少

    webbrowser1.OleObject.document.parentwindow.scrollto(0,1000);// scrollto滚动到某个位置

5.webbrowser屏蔽鼠标右键  TEmbeddedWB设置DisabledPopupMenuItems属性

webbrowser1.DisabledPopupMenuItems := [rcmDefault,rcmImage,rcmControl,rcmTable,rcmSelText,rcmAnchor,rcmUnKnown,rcmImageArt,rcmImgDynSrc,rcmDebug,rcmAll]

6.webbrowser屏蔽网页图片  TEmbeddedWB设置DownloadImages属性

webbrowser1.DownloadOptions := [];

7.webbrowser按照元素的属性获取元素

function GetDocLinkByHref(doc : IHTMLDocument2;str_url:string):IHTMLAnchorElement;

var

  i               : Integer;

  label_iDispatch : iDispatch;

  label_element   : IHTMLAnchorElement;  //引用mshtml

begin

  Result := nil;

doc  := webbrowser1.document as Ihtmldocument2;

  if not Assigned(doc) then

    Exit;

  for i:=0 to doc.links.length-1 do

  begin

    label_iDispatch   := doc.links.item(i,0);

    label_element     := doc.links.item(I,0) as IHTMLAnchorElement;

    if   (AnsiPos(str_url,(doc.links.item(I,0) as IHTMLElement).getAttribute('tag',0))>0) 

    then

    begin

      Result := label_element;

      Break;

    end;

  end;

end;

8.webbrowser TEmbededwb屏蔽弹窗并捕获弹窗信息                 //在 TEmbededwb的OnShowMessage事件中处理

procedure TForm1.wb1NavigateComplete2(Sender: TObject;

  const pDisp: IDispatch; var URL: OleVariant);

VAR

  str_url : string;

begin

  Wb1.OleObject.document.parentWindow.execScript('window.alert=null;','JavaScript');

  Wb1.OleObject.document.parentWindow.execScript('window.open=null;','JavaScript');

  Wb1.OleObject.document.parentWindow.execScript('window.close=null;','JavaScript');

  Wb1.OleObject.document.parentWindow.execScript('window.showModalDialog=null;','JavaScript');

  Wb1.OleObject.document.parentwindow.execscript('function confirm() {return true;}','Javascript');

end;

function TForm1.webbrowser1ShowMessage(Sender: TObject; HWND: Cardinal; lpstrText,  lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar;

dwHelpContext: Integer; var plResult: Integer): HRESULT;

begin

    plResult := IDOK;   //屏蔽alert\open\close等弹窗

    Result := S_OK;  //屏蔽confirm确认框,并点击确认

   mmo1.Lines.Add(lpstrText);  //lpstrText即为捕获到的弹窗内容

end;

屏蔽WebBrowser页面中的声音

procedure CloseSound;
var 
  hWinmm: Cardinal;
  pwaveOutWrite: Pointer;
  lp: Cardinal;
 begin
  hWinmm := LoadLibrary('Winmm.dll');
  if hWinmm > 0 then
    pwaveOutWrite := GetProcAddress(hWinmm, 'waveOutOpen');
  if pwaveOutWrite  <> nil then begin
    VirtualProtect(pwaveOutWrite, 3, PAGE_EXECUTE_READWRITE, lp);
    Move(#$C2#$18#$00, pwaveOutWrite^, 3);
  end;
end;

//强制Webbroser使用IE8内核 SetWBCoreIE8(8000);

procedure SetWBCoreIE8(i_value:Integer);

var

  str_exeName  : string;

  reg          : TRegistry;

begin

 try

  str_exeName  := RightFromStr(Application.ExeName,'\',False);

  reg          := TRegistry.Create;

  reg.RootKey  := HKEY_LOCAL_MACHINE;

  if reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl', False) then

  begin

    if not reg.KeyExists('FEATURE_BROWSER_EMULATION') then

      reg.CreateKey('FEATURE_BROWSER_EMULATION');

  end;

  reg.CloseKey;

  if reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', False) then

  begin

    reg.WriteInteger(str_exeName,i_value);

//    if not reg.ValueExists(str_exeName) then

//    begin

//      reg.WriteInteger(str_exeName,i_value);

//    end;

  end;

  reg.CloseKey;

  reg.Free;

 except

 end;

end;

最后奉献以前收集的关于WB的文章链接:

Delphi Webbrowser

delphi 模拟自动登录网页webbrowserdelphi webbrowser查找对象实现自动登录_delphi webbrowser与delphi互动 !!!WebBrowser组件和MSHTML 在Delphi中的使用Delphidelphi中Webbrowser - Max Woods - 博客园WebBrowser组件和MSHTML 在Delphi中的使用webbrowser轻松实现自动填表WebBrowser 操作记要 - 万一 - 博客园delphi中Webbrowser的使用技巧 - wystec的日志 - 网易博客delphi webbrowser 遍历网页元素Delphi7 Webbrowser制作网页表单自动提交器按步分析(1) - 中星9号 - 博客园delphi中如何在多线程环境下操作webbrowser控件delphi利用webservise登陆百度VB WebBrowser 为页面添加代码的方法_百度知道关闭webbrowser的弹出框(对话框Delphi中WebBrowser(或者EmbeddedWebBrowser)控件打开部分网站报“Invalid
floating point operation”异常的解决方法 - XuXn - 博客园
Delphi中webbrowser的document 对象的属性方法事件_硬软兼得博客_新浪博客Delphi获取句柄并发送消息delphi WebBrowser获取iframe页面内容Twebbrowser如何写多线程? - Delphi _ 网络通信_分布式开发【发现】如何屏蔽掉WebBrowser在刷新网页等时候发出的声音 - Boringlamb - 博客园对ExtendedWebBrowser的再扩展(续)_呼吸空间_百度空间接收IWebBrowser2的自动化事件_My_百度空间delphi WebBrowser 开发浏览器_SAP学习_abap_百度空间【转】WebBrowser的Cookie操作(与CookieContainer的关系)_奎宇工作室_百度空间蓝鸟-Delphi的WebBrowser改造,对网页中Alter等对话框的改造方法(转载)如何找到webbrowser打开网页中flash的接口?能否用这个接口控制flash的播放?_VC高级研究_积木群组webBrowser获取网页flash句柄模拟单击的问题 - .NET技术 _ C#VB 如何向 WebBrowser1 中的flash发送左边点击事件 - VB _ 网络编程用WebBrowser实现HTML界面的应用扩展 WebBrowser 控件 DragWebBrowser FlashGameWebBrowser_C# 视角_CS程序员之窗WebBrowser 设置代理(100分) - Delphi _ 网络通信_分布式开发屏蔽WebBrowser页面中传出来的声音 - jxgxy - 博客园可以对同一个程序中的多个WebBrowser设置不用的代理服务器吗?本地:双线路、双IP、双网卡 设置上网_我是谁?—Andy Gu_百度空间Delphi中使用EmbeddedWB屏蔽指定内容的网页对话框 - Patrick Pullman - 博客园Web Browser Control – Specifying the IE Version - Rick Strahl's Web LogWebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下? - BobLiu - 博客园WebBrowser 中,无法释放内存? - CSDN论坛 - CSDN.NET为什么浏览器会使用多进程架构。 - ithzhang - 博客频道 - CSDN.NETWindows 消息 - 万一 - 博客园【WebBrowser】多进程编程(一) - dick_china的专栏 - 博客频道 - CSDN.NET如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式 - IE浏览器研发 !!用Tchromium替换webbrowser - Bach - 博客园webBrowser 控制select 下拉列表_风月无边_百度空间html中下拉列表框中的全部属性 - 已解决 - 搜搜问问Delphi编写 修改Cookie的浏览器TEmbeddedWB Component - EmbeddedWB - bsalsa forumwebBrowser获取网页flash句柄模拟单击的问题 - CSDN论坛 - CSDN.NET

支持原创,转载请注明出处!

delphi WebBrowser的使用方法详解(五)-难点释疑的更多相关文章

  1. delphi WebBrowser的使用方法详解(六)

    通篇引用mshtml; 一.webbrowser获取滚动条的位置 function GetScrollPositionX(FWB:TEmbeddedWB):Integer;     //水平滚动条位置 ...

  2. delphi WebBrowser的使用方法详解(三)

    WebBrowser 操作记要 WebBrowser1.GoHome;  //到浏览器默认主页 WebBrowser1.Refresh;  //刷新 WebBrowser1.GoBack;  //后退 ...

  3. delphi WebBrowser的使用方法详解(四)-webbrowser轻松实现自动填表

    webbrowser轻松实现自动填表 步骤如下:  第一步:获取网页 调用Webbrowser 的Navigate系列函数.等待网页装载完成,得到document对象. 在调用 webBrowser. ...

  4. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  5. “全栈2019”Java多线程第五章:线程睡眠sleep()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  6. “全栈2019”Java第六十五章:接口与默认方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

  8. CURL使用方法详解

    php采集神器CURL使用方法详解 作者:佚名  更新时间:2016-10-21   对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...

  9. PHP cURL应用实现模拟登录与采集使用方法详解

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

随机推荐

  1. C# zedgraph利用另一窗口取得的串口数据绘图

    C# zedgraph利用另一窗口获得的串口数据绘图第一次用zedgraph,非常不熟悉,网上很多内容看的云里雾里... 这个程序主界面接收串口数据,而另外一个窗口进行实时曲线绘图,要怎么样实现for ...

  2. c语言基础:数据类型 分类: iOS学习 c语言基础 2015-06-10 21:43 9人阅读 评论(0) 收藏

    C语言基本数据类型大体上分为: 整型 和 浮点型   字节: 计算机中最小的储存单位     1 Byte = 8 bit 整型:         int     4                  ...

  3. PS如何批量处理图片

    喜爱摄影的朋友可能都有这样的体会,相机里面存了大量的图片,一般都是2048×1536或者更大像素的照片,每张都有1M以上,如果设置的清晰度高,则照片就更大,这样的图片是无法上传到博客中的(博客要求每张 ...

  4. Windows Server2008 R2性能优化方法

    经常使用的是Windows 2008R2企业版的服务器,简单总结一下性能优化的方法 ========================================================== ...

  5. 【java编程】正确重写hashCode和equesl方案

    一. 正确书写hashCode的办法: [原则]按照equals( )中比较两个对象是否一致的条件用到的属性来重写hashCode(). {1}. 常用的办法就是利用涉及到的的属性进行线性组合. {2 ...

  6. vulcanjs 简单package 编写

    vulcanjs 功能是以包进行管理,包里面包含了运行依赖的组件以及对于路由的注册 参考项目 项目结构 ├── README.md ├── license.md ├── package-lock.js ...

  7. asp.net excel 操作

    /// <summary> /// 数据操作 /// </summary> /// <param name="fileName"></pa ...

  8. 使用 phpStudy + VSCODE 进行 PHP 断点调试

    使用 phpStudy + VSCODE 进行 PHP 断点调试 自己摸索过程有点曲折,但还是配置成功了,现分享如下. 原料 phpStudy 2018 VSCODE 配置过程 安装 phpStudy ...

  9. FastAdmin 开发第三天:认识目录

    以下为标准 FastAdmin 安装后的目录 我们在运行命令时都是在这个目录. 我们所有的命令都在这个目录下面运行. 比如:安装前端组件,bower install 安装php 组件 composer ...

  10. hive 安装、知识点

    hive 查询语句: 语句 含义 show database; 或 show schemas; 查看数据库 show tables; hive显示所有表 set; 查看hive配置信息 问题:load ...