回重新讲解了 IEBrowser jQuery 方面的方法, 本次向大家介绍其新版本中为页面元素添加 .NET 事件的功能.

IEBrowser 的最新版本 2.5.0 中, 增加了 AttachEvent 系列的方法, 分别是 AttachEvent, AttachEventByID, AttachEventByJQuery, AttachEventByTagName, 他们可以为指定的 HtmlElement 对象, 指定 id 属性的元素, 符合指定 JQuery 对象要求的元素, 以及指定 tagName 属性的元素添加 .NET 事件.

次的例子是实现一个简单的加法运算功能, 首先, 新建了一个名为 add.htm 的页面, 代码如下:

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html>
3 <head>
4 <title></title>
5 </head>
6 <body>
7 <input type="text" id="num1" /> + <input type="text" id="num2" />
8 <input type="button" value="=" /> <span id="result">?</span>
9 </body>
10 </html>

在页面中, 添加了两个 id 分别为 num1 和 num2 的文本框, 用户将在这两个文本框中输入两个加数, 另外有一个用于计算的 = 号按钮, 以及一个 id 为  result 并显示计算结果的 span 元素.

可以看到页面中没有书写任何的 js 脚本来完成加法的运算, 因为我们接下来要在 .NET 中使用 IEBrowser 来完成这个任务.

页面编写完成后, 我们添加一个窗体 FormAdd, 下面是部分代码:

1 public partial class FormAdd : Form
2 {
3 private IEBrowser ie;
4
5 // ...
6
7 private void FormAdd_Load ( object sender, EventArgs e )
8 {
9 this.ie = new IEBrowser ( this.webBrowser );
10
11 this.ie.Navigate ( Path.Combine ( AppDomain.CurrentDomain.BaseDirectory, "add.htm" ) );
12
13 this.ie.IEFlow.Wait ( new UrlCondition ( "w", "add.htm", StringCompareMode.Contain ) );
14
15 this.ie.AttachEventByID ( "num1", "onchange", this.numChange );
16 this.ie.AttachEventByID ( "num2", "onchange", this.numChange );
17
18 this.ie.InstallJQuery(JQuery.CodeMin);
19 this.ie.AttachEventByJQuery ( JQuery.Create ( "':button'" ), "onclick", this.addClick );
20 }
21
22 private void numChange ( object sender, EventArgs e )
23 {
24 HtmlElement num = sender as HtmlElement;
25
26 try
27 { Convert.ToInt32 ( num.GetAttribute ( "value" ) ); }
28 catch
29 { MessageBox.Show ( "请输入一个正确的数字" ); }
30
31 }
32
33 private void addClick ( object sender, EventArgs e )
34 {
35
36 try
37 {
38 int result;
39
40 result = Convert.ToInt32 ( this.ie.ExecuteJQuery<string> ( JQuery.Create ( "'#num1'" ).Val ( ) ) ) + Convert.ToInt32 ( this.ie.ExecuteJQuery<string> ( JQuery.Create ( "'#num2'" ).Val ( ) ) );
41
42 this.ie.ExecuteJQuery ( JQuery.Create ( "'#result'" ).Text ( "'" + result.ToString ( ) + "'" ) );
43 }
44 catch
45 { MessageBox.Show ( "计算错误" ); }
46
47 }
48
49 }

在窗口的 Load 事件中, 我们初始化了 IEBrowser 对象并使用 Navigate 和 Wait 方法载入并等待之前建立的 add.htm 页面, 这里 add.htm 需要输出到最终的运行目录中. 而 Navigate 和 Wait 这两个方法应该在之前的文章中说明过, 这里就不再详细解释了.

在 15 和 16 行, 我们使用了 AttachEventByID 方法为页面上的两个文本框添加了改变事件, 第一个参数传递了文本框的 id, 分别是 num1 和 num2, 第二个参数则为事件的名称 onchange, 第三个参数为处理事件的 .NET 方法 numChange. 在 22 行, 我们看到了 numChange 的定义, 在 numChange 中, 检测了文本框的文本是否为一个合法的数字, 我只是使用了一个简单 try ... catch ... 来完成这个功能, 大家也可以使用其他的方法. 事件中的 sender 参数也就是触发事件的页面元素对应的 HtmlElement 对象, 而正因如此, 我们才使用了 num.GetAttribute ( "value" ) 来获取文本框的 value 属性.

在 19 行, 我们使用了 AttachEventByJQuery 方法为页面上的按钮添加点击事件, 选择器 ':button' 表示页面上所有的按钮, 而页面上只有一个计算按钮, 所以也就正确的为计算添加了 addClick 来处理事件. 而 AttachEventByJQuery 也上一方法的不同在于, 他传递一个 JQuery 对象作为选择页面的依据. 注意执行 AttachEventByJQuery 之前, 我们需要使用 InstallJQuery 方法在页面上安装 jQuery 脚本. 在 addClick 中, 我们通过 IEBrowser 的 ExecuteJQuery 方法获取到了页面中用户输入的加数, 然后相加并设置到 span 元素中显示.

上篇文章介绍了 IEBrowser jQuery 方面的功能, 这里不再详细解释 40 与 42 行.

的, 整个例子还是比较简单的, 如果希望看到实际过程, 可以参照下面的演示.

IEBrowser 是开源共享的代码, 可以在 http://code.google.com/p/zsharedcode/wiki/Download 页面下载 dll 或者是源代码.

感谢之前留言以及通过其他方法给我提出建议的朋友, 这些建议其实大部分我已经完成, 目前 IEBrowser 最新版本为 2.5.0, 可以在上面的地址看到新版本改动的内容, 如果大家有关于 IEBrowser 好的想法和建议, 欢迎继续留言.

实际过程演示: http://www.tudou.com/programs/view/xfQiXQcr5xw/ .

转载于:https://www.cnblogs.com/zoyobar/archive/2011/07/05/IEBrowser_5.html

在 .NET 中设置页面元素的 javascript 事件 - IEBrowser [5]相关推荐

  1. python中frame中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素

    有时网页中会嵌套一个或者多个Frame,此时我们直接去找嵌套在Frame里面的元素会抛出异常,所以在操作的时候我们需要将页面焦点切换到Frame里面,下面我们就以一个实例演示一下! 首先先创建三个ht ...

  2. 在Word2007文档中设置页面边框

    用户可以在Word2007文档中设置普通的线型页面边框和各种图标样式的艺术型页面边框,使Word2007文档更富有表现力.在Word2007文档中设置页面边框的步骤如下所述: 1.打开Word2007 ...

  3. 在HTML5中, web app 以及手机客户端中,设置页面图片等比例居中显示

    在HTML5中, web app 以及手机客户端中,设置页面图片等比例居中显示 接触前端时间不长,费了一些时间 img{display:block;max-width:100%;margin:auto ...

  4. 计算机页面边框怎么设置,[计算机]在Word2003文档中设置页面边框.doc

    [计算机]在Word2003文档中设置页面边框.doc 上传人:max****ui 文档编号:14044395 上传时间:2019-01-31 格式:DOC 页数:4 大小:319.68KB 下载提示 ...

  5. python中frameset中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素

    有时网页中会嵌套一个或者多个Frame,此时我们直接去找嵌套在Frame里面的元素会抛出异常,所以在操作的时候我们需要将页面焦点切换到Frame里面,下面我们就以一个实例演示一下! 首先先创建三个ht ...

  6. 注册表中设置页面打印参数

    网页文件,可以通过[文件]->[页面设置],并修改相应的参数,就可实现打印格式的调整,如下图 但是如何通过程序实现,根据打印的需要,动态设置这些参数.可以通过操作注册表,达到同样的效果, 因为这 ...

  7. jsp或java中设置页面默认IE浏览版本

    在我们开发中使用不同IE浏览器版本,显示的效果不一样. 我们可以中代码中设置默认版本 jsp中按如下设置 <meta http-equiv="X-UA-Compatible" ...

  8. php内容怎么设置隐藏,在PHP中设置隐藏元素的值 - php

    我的表单中有一个隐藏字段.在提交表单时,我调用数据库函数将输入添加到数据库并返回查询结果.我希望将值设置为返回隐藏字段.但是当我不能给它赋值时 的PHP echo ' alert("hell ...

  9. CSS中隐藏页面元素的几种方式和区别

    前言. 在平常的样式排版中,我们经常遇到将某个模块隐藏的场景,通过css隐藏的元素方法有很多种,它们看起来实现的效果是一致的,但实际上每一种方法都有一丝轻微的不同,这些不同决定了在一些特定场合下使用哪 ...

最新文章

  1. 关于Java中的JDBC使用和数据库(SQL Server)连接之后的一些操作
  2. Silverlight 2.0 RTW 正式版发布(附下载地址)!
  3. .NET开发辅助工具-ANTS Performance Profiler【转载】
  4. Java如何转换protobuf-net中的bcl.DateTime对象
  5. iptables详细说明
  6. gethostbyname()函数说明
  7. .计算机自动关机或重启,电脑自动关机或者重启怎么处理
  8. windows环境里React-Native运行失败的原因之一,缺少依赖
  9. nutch mysql hadoop_nutch2.2.1+ hadoop1.2.1 + mysql5.6.13
  10. SQL – 2.SQLServer的管理 + 3.SQL基础1 + 4.SQL基础2
  11. 架构组件:基于Shard-Jdbc分库分表,数据库扩容方案
  12. java用对话框输出计算结果_Java怎么实现输入一个string表达式然后输出计算的结果...
  13. JavaScript学习(五十八)—作用域链
  14. 网络编辑的内容制作及管理规范
  15. Springsecurity之UserDetails
  16. easyui弹出加载遮罩层(转)
  17. 一款HP的本本大家帮忙看一下
  18. 全球铁矿石行业供给分析与投资可行性分析报告2022年版
  19. 国际象棋游戏测试软件,Fritz国际象棋测试_CPUCPU评测-中关村在线
  20. 机械制造作业考研题目答案分享——定位误差及其计算

热门文章

  1. 接口测试如何在post请求中传递文件
  2. 域间套接字socketpair
  3. base | 文本处理方法(Ⅰ-2):正则表达式
  4. gstat | 空间插值(一)——反距离权重插值;使用ggplot2绘制地图
  5. 前端盒模型的概念和文本溢出解决办法
  6. 培训学web前端前景如何?
  7. 前端开发基础知识整理--web综合篇
  8. iptv管理系统php制作,双子星IPTV管理系统搭建教程
  9. 企业千人千面管理模式_一汽解放青岛汽车有限公司荣获“2020(第十六届)中国企业教育先进单位百强”...
  10. php如何在微信跳转支付宝支付,微信支付成功了怎么跳转到我指定的信息提示页? - 码支付...