如何得到拥有某一事件的元素? 本帖最后由 trickglom 于 2012-02-29 22:53:35 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <div id="div1" onclick="external.DoSomething0()" style="padding:20px;"> <span>诸多干扰元素<span>诸多干扰元素<span>诸多干扰元素<span>诸多干扰元素...</span>...</span>...</span>...</span> <div id="div2" onclick="external.DoSomething1()" style="padding:20px;"> <span>诸多干扰元素<span>诸多干扰元素<span>诸多干扰元素<span>诸多干扰元素...</span>...</span>...</span>...</span> <div id="div3" onclick="external.DoSomething2()" style="padding:20px;"> 中间可能有多层嵌套,如果没有阻止冒泡, 点击内层的元素会触发外层元素的click事件, 通过event的srcElement可以得知点击了哪个元素, 但如何得知是哪个这个事件是哪个元素的? </div> </div></div>再解释下,为DIV1,DIV2,DIV3写了一个专用事件函数class DivClick: IDispatch {};然后使用IHTMLElement.put_click指定这些DIV的onclick事件。那么class DivClick如何侦知是触发的是哪个DIV的onclick事件先说说我的思路。在这里因为干扰元素的存在,event的srcElement不能凑效。如果是用javascript倒好办,传递一个this参数就能解决。问题是,实在不知道这个this参数用MFC+webbrowser怎么获取 IHTMLElement可以得到id,那你可以在 DivClick保存这个id的 id不能确定,唯一能确定是className和tagName。我想得到的只有用阻止冒泡,从srcElement开始层层判断父元素是否拥有同类事件,如果有,则fireEvent。这样的话,就要将所有可用之于onclick的IDispatch派生类都写上这样的判断,也蛮蛋疼的 枚举element,然后getAttribute获取onclick属性内容试一试 如果是可以onclick的element,可以考虑execScript送入一段js模拟element的click事件也可以使用fireEvent 简化一下我的问题:如<div onclick="func(this)">test html</div>上文的this用MFC+webbrowser+ATL+IDispatch如何实现?有人知道javascript的在这方面的实现原理么? 思路有一些问题,实现js中的this干吗呢,this是指的当前对象,在div中当然指的就是该div。要想知道点击了哪一个div,在DoSomething0、DoSomething1、DoSomething2中调用调用dispatch接口传递给mfc不就知道点击的哪一个div了。难道网页不是你自己的?那也可以,put_innnerhtml然后操作。或者插入js操作,同样在js中调用自己定义的dispatch接口通知mfc即可。 对内存消耗熟悉的进来,高手速进!!!! 请教iterator 的&*用法 为什么BSTR*类型的传出参数,在javascript中无法用var 变量获得? 关于集体策略的问题,欢迎指点。 棘手的线程问题. select或asynceventselect使用? 以前看看帖 会的给点意见 现在一打开帖子就贴两个广告 真烦人。。。 怎样将字库文件HZK16转换成C文件? 如何写一个与outlook窗口类似的窗口 如何在 vc MFC中画出y=3x曲线,并具有坐标轴?用什么函数? win32环境 怎样在picture control中显示bitmap? listbox自绘边框的实现.
<div id="div1" onclick="external.DoSomething0()" style="padding:20px;">
<span>诸多干扰元素<span>诸多干扰元素<span>诸多干扰元素<span>诸多干扰元素...</span>...</span>...</span>...</span>
<div id="div2" onclick="external.DoSomething1()" style="padding:20px;">
<span>诸多干扰元素<span>诸多干扰元素<span>诸多干扰元素<span>诸多干扰元素...</span>...</span>...</span>...</span>
<div id="div3" onclick="external.DoSomething2()" style="padding:20px;">
中间可能有多层嵌套,如果没有阻止冒泡,
点击内层的元素会触发外层元素的click事件,
通过event的srcElement可以得知点击了哪个元素,
但如何得知是哪个这个事件是哪个元素的?
</div>
</div>
</div>
再解释下,为DIV1,DIV2,DIV3写了一个专用事件函数class DivClick: IDispatch {};
然后使用IHTMLElement.put_click指定这些DIV的onclick事件。
那么class DivClick如何侦知是触发的是哪个DIV的onclick事件先说说我的思路。在这里因为干扰元素的存在,event的srcElement不能凑效。如果是用javascript倒好办,传递一个this参数就能解决。问题是,实在不知道这个this参数用MFC+webbrowser怎么获取
这样的话,就要将所有可用之于onclick的IDispatch派生类都写上这样的判断,也蛮蛋疼的
也可以使用fireEvent
如<div onclick="func(this)">test html</div>上文的this用MFC+webbrowser+ATL+IDispatch如何实现?有人知道javascript的在这方面的实现原理么?
难道网页不是你自己的?那也可以,put_innnerhtml然后操作。或者插入js操作,同样在js中调用自己定义的dispatch接口通知mfc即可。