Posted on 2007-04-11 15:52
随心所欲 阅读(18681)
评论(30) 编辑 收藏 网摘 所属分类:
VS2005
Feedback
前几天我也试了下ie控件,不过是com下的。但是发现了一个问题就是js代码内触发的事件,无法被WinForm UI 捕捉到,比如如下代码:
function invokeBtnEvent()
{
var btn = document.getElementById("testBtn");
btn.onclick(); //WinUI 截获不到该btn的事件
}
但是,如果是手动的在页面上点击该btn,则可以触发WinUI上定义的事件处理函数。
@zfphere
这一个不难。
你可以遍历element,然后代理事件。
在_DocumentCompleted事件里面
foreach(element)
{
element.AttachEventHandler("onclick", new EventHandler(ClickHandler));
}
@zfphere
这样就可以把html的事件代理到win中。
可惜,我不知道window.close对应那一个事件,不然就容易处理多了。
不知道从ShellWindow得到的IWebBrowser2对象是否也可以挂接事件。
请问,那个wb_Container就是.net2.0里面新增的WebBrowser吗?
如果是的话,wb_Container.Url这个好像还是原来的地址啊?如何得到新弹出窗口的地址呢?
如果方便的话,能发一下源码吗?
@队长
是的,就是这个控件。
在_NewWindow事件里面得到的url就是新的将要打开的那个url了。
源码上边就有,完整的类,直接能用。
额。对不住,经过试验,使用sender.url也不行,抱歉。
@沈曦
yes, that's the point.
@沈曦
sender is the same control , WebBrowser.
请问下:
如果我要显示调用这个控件里面加载了的页面的类似<a>提交按钮这些的点击事件,有没解决方案呢?【显示调用,就是直接函数去调,不用再去点击这些】
@sumaoyi
应该可以。
不论是“显式”还是“隐式”,最终都是通过java虚拟机来解释触发的。
@未注册
有点小技巧,我是通过判断DocumentCompleted的次数来确定的。每个网站这个时间完成的次数是一定的。
wb_Container_DocumentCompleted:
i++
if(i==xx)
xxx
这个控件,能不能获得访问一个URL产生的所以数据。一般IE访问一个URL,先下载这个页面,然后去请求这个页面其它数据,这些数据怎么获得。我想得到这些数据。我该怎么做呢?
@sjw
可以得到。
webBrowser.Document对象就是现实的内容,与代码自在其中。
想问题下当它出现滚动条时怎样来控制它的滚动条的位置
@ye
除非用更底层的控制。
我用的方法有点垃圾:模拟鼠标点击滚动条。