首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetElementById/GetElementsByTagName not元素

GetElementById/GetElementsByTagName not元素
EN

Stack Overflow用户
提问于 2014-08-22 17:29:31
回答 2查看 1.3K关注 0票数 0

请记住,我对HTML只知道一点:

有一个网站我正在尝试使用WebBrowser与之交互。该站点具有如下文本区域元素:

代码语言:javascript
复制
<textarea name="ctl00$ContentPlaceHolderMain$txtCallDesc" rows="2" cols="20" id="ctl00_ContentPlaceHolderMain_txtCallDesc" tabindex="205" style="width: 100%; height: 80px; font-size: 8pt"></textarea>

根据我所读到的,textarea生成的ID表示它被放置在另一种形式中,我不确定这是否是我遇到问题的地方。

加载页面后,按钮中有如下内容:

代码语言:javascript
复制
Dim theCol As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("textarea")
For Each curElement As HtmlElement In theCol
    ListBox1.Items.Add(curElement.TagName)
Next

名单上什么都没有。我还尝试使用Chrome的“检查元素”特性收集的文本框的ID:

代码语言:javascript
复制
Dim value As HtmlElement = WebBrowser1.Document.GetElementById("ctl00_ContentPlaceHolderMain_txtCallDesc")
MsgBox(value.GetAttribute("value"))

无论我做什么,我似乎都无法让程序认识到文档中有textarea元素。这个页面的源文件太长了,很难给这里的每个人发垃圾邮件,但是有什么是我应该注意的吗?也许需要先获得另一个元素,然后搜索其中的元素?

编辑:

我试图获得的元素似乎在一个iFrame中,但是看起来它来自同一个域,所以相同的来源策略不应该起作用,对吗?

代码语言:javascript
复制
<iframe id="mainFrame" width="100%" height="100%" frameborder="0" class="mainFrame" name="Main" src="/Calls/OpenCalls.aspx">
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-22 19:49:03

使用获取Iframe HTML中显示的代码

代码语言:javascript
复制
For i = 0 To WebBrowser1.Document.Window.Frames.Count - 1
    Dim frameDoc = WebBrowser1.Document.Window.Frames(i)

    Dim theCol = frameDoc.Document.GetElementsByTagName("textarea")

    For Each curElement As HtmlElement In theCol
        ListBox1.Items.Add(String.Format("TagName: {0} Id:{1}", curElement.TagName, curElement.Id))
    Next

Next

关键部分是WebBrowser1.Document.Window.Frames的使用。

票数 2
EN

Stack Overflow用户

发布于 2014-08-22 18:18:45

您不能直接引用iframe中的元素,因为它们位于另一个文档中。因此,首先在iframe中获得对文档元素的引用,然后您可以以同样的方式查询它。

代码语言:javascript
复制
Dim frameDoc = WebBrowser1.Document.GetElementById("mainFrame").DomElement.contentWindow.Docume‌​nt

其他你已经知道的..。

代码语言:javascript
复制
Dim theCol = frameDoc.GetElementsByTagName("textarea")
For Each curElement In theCol
    ListBox1.Items.Add(curElement.TagName)
Next
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25452549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档