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

我想用这种方法与$id获得元素,但它meta标签匹配与具有相同的价值$id的属性。C#为什么方法HtmlDocument.GetElementById匹配标记的属性名称?

的HTMLDocument是这样的:

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

我试图获取标记div与 “说明” ID:

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

但我得到meta而不是div。为什么meta标签匹配?

+6

看起来你正在运行到[这](http://www.456bereastreet.com/archive/200802/beware_of_id_and_name_attribute_mixups_when_using_getelementbyid_in_internet_explorer/)。欢迎来到IE – StuartLC 2015-03-19 04:49:29

+0

@StuartLC可能就在这里。 [GetElementById]的C#实现(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)位于共享库中,JScript也使用这个共享库,这是JScript引擎在发布该文章时使用的js引擎。假设它仍然没有被修复,那可能是你现在遇到的同样的问题。 – Matt 2015-03-19 05:48:09

+0

谢谢。@ StuartLC @Matt – lauriezzc 2015-03-19 05:56:13

回答

2

为什么Here is an official reference from Microsoft: getElementById方法:返回对第一个对象的引用,该对象的ID为的NAME属性。

解决方案:应避免在身体名ATTRIB这样你就可以通过ID,如果您使用myHtmlDocument.Body.All [ID]公式sharique安萨里提到的参考变量。

干杯

0

试试这个: -

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

希望这可以帮助?

相关问题