2015-03-19 15 views
9
HtmlDocument.GetElementById("$id") 

Chcę użyć tej metody, aby uzyskać element z $id, ale pasuje do meta tag z atrybutem, który ma taką samą wartość jak $id.C# Dlaczego metoda HtmlDocument.GetElementById jest zgodna z nazwą atrybutu tagu?

HTMLDocument jest tak:

<html> 
    <head> 
     <meta name="description" content=""> 
    </head> 
    <body> 
     <div id="description"></div> 
    </body> 
</html> 

Próbowałem dostać tag div z id "description":

HtmlElement elem = doc.GetElementById("description"); 

Ale mam meta zamiast div. Dlaczego tag meta pasuje?

+6

Wygląda jak używasz do [tego] (http://www.456bereastreet.com/archive/200802/beware_of_id_and_name_attribute_mixups_when_using_getelementbyid_in_internet_explorer/). Witamy w IE – StuartLC

+0

@StuartLC może być właśnie tutaj. Implementacja języka C# dla [GetElementById] (https://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.getelementbyid (v = vs.110) .aspx? Cs-save-lang = 1 & cs -lang = jscript # code-snippet-1) znajduje się w bibliotece współdzielonej, która jest również używana przez JScript, który był silnikiem js używanym przez IE w momencie publikacji tego artykułu. Zakładając, że nadal nie zostało to naprawione, może to być ten sam problem, na który natrafiłeś. – Matt

+0

Dzięki. @ StuartLC @Matt – lauriezzc

Odpowiedz

2

Dlaczego? Here is an official reference from Microsoft: Metoda getElementById: Zwraca referencję do pierwszego obiektu o określonej wartości identyfikatora ID lub.

Rozwiązanie: Należy unikać nazw attrib w organizmie, dzięki czemu można odwoływać tagów id jeśli używasz myHtmlDocument.Body.All [id] formułę jak wspomniano sharique Ansari.

Cheers

0

Spróbuj tego: -

HtmlDocument HtmlDocument = webBrowser1.Document; 
MessageBox.Show(HtmlDocument.Body.All["description"].TagName); 

Nadzieja Pomaga to?

Powiązane problemy