这个是不是非常麻烦的一件事儿? 
似乎没有直接的接口获得这个属性。
(比如一个div)寻求高手相助。

解决方案 »

  1.   

    http://helenblog.wordpress.com/2007/05/01/将该IHTMLDOMNode转去IHTMLElement, 再用IHTMLElement::getAttribute 取Attribute的值
      

  2.   

    微软的MSHTML使用起来好似有些问题. 比如: 对于以下的HTML content:
    <HTML><HEAD><TITLE>my%20test%20on%20wed</TITLE>
    <META http-equiv=Content-Type content=”text/html; charset=utf-8″>
    <META content=”MSHTML 6.00.6000.16414″ name=GENERATOR>
    <STYLE type=text/css>BODY {
     FONT-SIZE: 12pt; BACKGROUND: #ffffff left top; COLOR: black; FONT-FAMILY: Times New Roman
    }
    </STYLE>
    </HEAD>
    <BODY>
    <DIV><STRONG>This is a test a</STRONG></DIV>
    <DIV align=center><STRONG>Center</STRONG></DIV>
    <DIV align=left><STRONG>Left</STRONG></DIV>
    <DIV align=right><STRONG>right</STRONG></DIV>
    <DIV align=left><STRONG><FONT style=”FONT-SIZE: 19pt”>Big
    Font</FONT></STRONG></DIV>
    <OL>
      <LI>
      <DIV align=left><STRONG>list1</STRONG></DIV>
      <LI>
      <DIV align=left><STRONG>list2</STRONG></DIV>
      <LI>
      <DIV align=left><U><EM><FONT color=#0000ff>list3</FONT></EM></U></DIV></LI></OL>
    <UL>
      <LI>bullet
      <LI>bullet2
      <LI>
      <TABLE borderColor=#d2d2d2 cellPadding=3 border=1>
        <TBODY>
        <TR>
          <TD>
            <DIV>  cell1</DIV></TD>
          <TD>
            <DIV>cell2  </DIV></TD></TR>
        <TR>
          <TD>
            <DIV> cell3 </DIV></TD>
          <TD>
            <DIV>cell4  </DIV></TD></TR></TBODY></TABLE></LI></UL>
    <DIV><IMG class=test id=44 style=”WIDTH: 324px; HEIGHT: 296px” height=480 alt=”"
    hspace=0 src=”water lilies.jpg” width=527 align=baseline border=0></DIV>
    <DIV> </DIV>
    <DIV> </DIV></BODY></HTML>Helen想得到<BODY> tag 里面的东东. 由于wordpress.com 会把每个HTML Element tag之后的换行回车解释做<BR/> tag, 所以Helen想把HTML element tag 之后的换行回车去掉, 而似乎MSHTML并没有提供这样的功能.而当Helen遍历HTML 的DOM Tree时, 发现MS HTML 对Attribute 的处理也很有问题. 以上面的HTML Content 为例, Helen想得到其中的<IMG> tag 的所有Attrbute.  如果先用IHTMLDOMNode::get_attributes得到IDispatch 指针再转去IHTMLAttributeCollection借口;  用IHTMLAttributeCollection::item 得到单个Attrbute 的IDispatch 指针再转去IHTMLDOMAttribute或者IHTMLDOMAttribute2借口 , 对于STYLE Attribute, 当IHTMLDOMAttribute::get_specified返回VARIANT_TRUE时, MSHTML IHTMLDOMAttribute2::::get_value 或者IHTMLDOMAttribute::get_nodeValue居然返回null. 当然MSDN 就有说明:The attributes collection does not expose the style object. Use the cssText property of the object’s style property to retrieve the persistent representation of the cascading styles associated with an object.可是既然这样, 就不要把SYTLE列入Attribute 里面嘛. 然后就是此时对于WIDTH和HEIGHT的处理, IHTMLDOMAttribute2::get_value都返回0值. 这样一来, 放到BLOG上的图片无法正确显示.  就算将IHTMLDOMNode转去IHTMLImgElement, 企图用IHTMLImgElement::get_width和IHTMLImgElement::get_height取WIDTH和HEIGHT值, 都只能得到0值.还有, 当Helen将该IHTMLDOMNode转去IHTMLElement, 再用IHTMLElement::getAttribute 取Attribute的值时, Width 和Height的值到是终于对头了, 但是就有新的情况: IHTMLElement::getAttribute不但不能得到正确的STYLE Attribute值, 连CLASS Attribute的值也取不到, 真是激气. 非要用IHTMLElement::get_className才行. 同样的还有ID的值也和CLASS类似, 要用IHTMLElement::get_id才可以. 估计还会有其他的几个Attribute也有相近的情况.而STYLE Attribute, 则一定要IHTMLElement::get_style的到IHTMLStyle 接口, 再用IHTMLStyle::get_cssText才能的到正确的结果,用MS HTML做一件这么简单的事情, 居然要这么山长水远,  微软, I 服了YOU.
      

  3.   

    如果我在html中对这个图片没有显式的声明 width="12" height="20" ,是否也能正常去的这个element的属性呢?
      

  4.   

    还有我如果定义了一个没有style的div,也没有定义他的尺寸,是否用mshtml能取得它的尺寸?谢谢~
      

  5.   


    请问高人 
    网页代码如下
    <a class="J_MemoFlag memo-flag" data-orderid="149725257706392" target="_blank" href="网页地址" title="" data-spm-anchor-id="a1z09.1.11.6" data="暂时没有备忘信息">
    </a>比如获取 data-orderid的值 target的值 data的值 以及 anchor-id 的值 等等 如何操作