当前位置:编程学习 > VB >>

如何判断webbrowser中点击文本框的事件?

模仿51touch全屏幕浏览器做了个触摸屏查询程序,用一个webbrowser全屏显示网站。
现在遇到的问题是“如何判断用户点击了webbrowser里显示的文本框”,我准备在这里打开软键盘。
参考网上的做法,没弄成。
还有的网页里的输入框是在一个iframe里,好像更不好判断 --------------------编程问答-------------------- http://topic.csdn.net/u/20101210/14/e84914ce-9d5f-480b-be58-f0c6083205a0.html --------------------编程问答-------------------- 你还找到原来这个帖子啦!
原来准备用hta做个简单的全屏幕浏览器,好几个问题解决不了,所以就换vb重做,基本上做好了。
想弄的再好一点,在用户点输入框时,自动打开软键盘。所以问问怎么捕获这个事件 --------------------编程问答-------------------- 自己顶一下
--------------------编程问答-------------------- 再   顶 --------------------编程问答--------------------
Private WithEvents dom As HTMLDocument
Private Sub Form_Load()
WebBrowser1.Navigate2 "about:blank"
Set dom = WebBrowser1.Document
End Sub
Private Function dom_onclick() As Boolean
If LCase(dom.activeElement.tagName) = "input" Then
s = LCase(dom.activeElement.type)
If s = "checkbox" Then
id = dom.activeElement.id
Debug.Print dom.activeElement.Checked; Tab; "id:"; id
a = Split(id, "-")
If dom.activeElement.Checked Then tags(a(0)).att(a(1)).trans = 1 Else tags(a(0)).att(a(1)).trans = 0
End If
End If
dom_onclick = True
End Function

这是我的某一工程的片段,点击复选框时自动触发对应事件的代码 改成判断是否是某个文本框就行了。 --------------------编程问答-------------------- 谢谢,我试试看 --------------------编程问答-------------------- 不行啊,老大
用dom.activeElement.tagName,有的网页可以正确判读,如hao123上的text
但有的网页里的text判断不出来,向新华网、人民网里的留言栏,好像input和text是放在iframe里的
dom.activeElement.tagName是不是没办法判断iframe里的东西?


下面是我的代码
Private WithEvents dom As HTMLDocument
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    WebBrowser1.Document.focus
    Set dom = WebBrowser1.Document
End Sub
Private Function dom_onclick() As Boolean
    If LCase(dom.activeElement.tagName) = "input" Then
        MsgBox LCase(dom.activeElement.Type) '打开软键盘
    End If
    dom_onclick = True
End Function
--------------------编程问答-------------------- 我也很好奇那些抓网页元素的工具是怎么读出套了N个框架里的元素的,难道遍列所有包含他的框架?那也太麻烦了吧 --------------------编程问答-------------------- 如果你连Iframe是啥都没搞清楚那这个问题就很难想通了
Set dom = WebBrowser1.Document.frames(2).Document --------------------编程问答-------------------- 如果你知道鼠标点的是框架里的哪个元素当然可以按楼上那样
但是如果你根本不知道点的是什么,那就得麻烦了,除了一层层遍历框架不知道还有没有其他办法可以快速知道鼠标处元素的 --------------------编程问答-------------------- 自己是开发者都不知道你要监控的是哪个iframe么,做web开发有不看源代码就开始编的么
需要监控哪个就设置哪个就行了 可以随时切换 --------------------编程问答-------------------- 自己是全屏幕浏览器的开发者,不是网站的开发者。
需要这个功能能做到在所有网站上起作用

肯定能实现的,向51touch的全屏幕浏览器就有这功能。但他是收费的,我自己做了个和他基本一样的程序,就剩下这个功能了 --------------------编程问答-------------------- 原来是这样,明白了
这样的话就不能用dom一级的控制手段了 Iframe无法跨域捕捉事件
不过有个办法可以实现你的目的
加入WebBrowser1_DocumentComplete事件 当每个非隐藏iframe加载完毕后 改写该iframe内所有需要弹出软键盘的文本框的onfocus事件 没有的则新加入 处理成你需要的事件即可 --------------------编程问答-------------------- 楼上,如果是多层嵌套iframe呢,一层一层的改?是不是太有点麻烦
应该有更好的方法 --------------------编程问答-------------------- 再顶一下
怎么csdn也不能解决问题,同一个问题用两种方法做,都没好的解决办法
--------------------编程问答-------------------- 引用olelib,遍历frame
补充:VB ,  控件
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,