如:
<html>
<head>
</head>
<body>
<a href="bb.htm">测试</a>
</body>
</html>
//=========================
当单击这个<a href="bb.htm">测试</a>
的时候,我怎么样得到这个“测试”两个字呢(即描述值)!
谢谢了呢。
<html>
<head>
</head>
<body>
<a href="bb.htm">测试</a>
</body>
</html>
//=========================
当单击这个<a href="bb.htm">测试</a>
的时候,我怎么样得到这个“测试”两个字呢(即描述值)!
谢谢了呢。
2、在DWebBrowserEvents2::DocumentComplete事件中根据IWebBrowser2::Document获得HTMLElementEvents2::onclick事件
3、根据onclick的参数IHTMLEventObj *pEvtObj,得到鼠标的坐标,请参考:http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/events/htmldocumentevents2/htmldocumentevents2.asp
4、通过IHTMLEventObj::srcElement得到触发单击事件的HTML标记
5、根据IHTMLElement::innerText得到标记间的文本
但问题在于:
1、<a href="bb.htm"><font>测试</font></a>
这种情况的(就是href 的后面还有一个元素的情况)是按楼上的方法可以接收到DISPID_HTMLELEMENTEVENTS2_ONCLICK 这个消息的。能过楼上的方法是可以得到测试这两个字。
2、<a href="bb.htm">测试</a>
这种情况的直接链接的方式,IE是不会有DISPID_HTMLELEMENTEVENTS2_ONCLICK 这个消息过来的。只会有DISPID_BEFORENAVIGATE2 这个消息过来的。在这个消息里面的LPDISPATCH pDisp = pDispParams->rgvarg[6].pdispVal; 的pDisp 中QueryInterface 是得不到IHTMLEventObj *pEvtObj 这个接口。从而就得不到IHTMLEventObj::srcElement 标记呀。测试两个字也就得不到呢。我现在遇到的就是第二种情况。。楼上两位能不能再告诉我呢?或者用什么方法在DISPID_BEFORENAVIGATE2 这种情况下得到标记呢?谢谢了。
DISPID_BEFORENAVIGATE2 这个消息内的参数6有pDispatch 可以获取IWEBBROWSE,进而得到
IDecoment2 再用pDoc->get_activeElement(&pElement);
pElement->get_innerText(&bstrInnerText);
就可以了。:)
不过还是谢谢你了。