2009-02-25 6 views
3

J'ai un contrôle System.Windows.Form.WebBrowser sur un formulaire. Je navigue cet objet de navigateur à une URL.obtenir IHTMLStyle3 à partir du Dom of HtmlElement dans IE

Une fois le chargement de la page terminé, j'aimerais analyser différents aspects de la page chargée.

En particulier je suis intéressé de voir l'attribut 'writingMode' qui se trouve sur l'interface IHTMLStyle3.

Quelque chose comme:

public void MyMethod(HtmlElement element) 
    { 
     IHTMLElement2 element2 = element.DomElement as IHTMLElement2; 
     IHTMLStyle3 style3 = element2.currentStyle as IHTMLStyle3; 

     string writingMode = style3.writingMode; 
    ... 

Le problème est, la valeur style3 est nulle. Je suppose que cela signifie que IHTMLElement2.currentStyle ne prend pas en charge IHTMLStyle3.

J'ai aussi essayé de lancer IHTMLELement.style. Mais bien que cela se passe bien avec IHTMLStyle3, il ne semble pas contenir le style tel qu'il a été appliqué à l'élément HTML.

Répondre

1

En regardant la documentation, je crois que vous devez obtenir la propriété IHTMLElement2.currentStyle car la propriété régulière style est le style en ligne uniquement. Cette différence est indiqué dans les remarques de IHTMLElement2.currentStyle:

Les valeurs renvoyées par les propriétés du IHTMLStyle et interfaces IHTMLCurrentStyle diffèrent lorsque le style d'un objet est pas encore défini en ligne. Par exemple, si l'auteur de une page Web définit la propriété de couleur de un paragraphe au rouge que par une liée ou d'une feuille de style intégré, et pas en ligne, le IHTMLCurrentStyle :: propriété de couleur renvoie la valeur rouge, et la propriété IHTMLStyle :: get_color ne renvoie pas une valeur. Toutefois, si l'auteur spécifie la valeur de la ligne de propriété de couleur , comme dans le exemple suivant, les deux IHTMLCurrentStyle :: couleur et IHTMLStyle :: propriétés get_color renvoient le rouge de valeur.

currentStyle fournit une interface IHTMLCurrentStyle, qui, lorsqu'il est interrogé pour IHTMLCurrentStyle2 vous donnera writingMode que vous avez besoin.

+0

- idiot moi j'essayais de lancer currentStyle en tant que HTMLStyle3 - j'aurais dû le transformer en HTMLCurrentStyle2! –

Questions connexes