【问题标题】:Get GeckoFx firefox browser control iframe html not accessible获取 GeckoFx firefox 浏览器控件 iframe html 无法访问
【发布时间】:2014-01-31 17:02:58
【问题描述】:

我正在使用 GeckoFX 22 c# Web 浏览器控件,但无法访问 iframe 中的标签。当我检查壁虎 innerhtml 时,似乎虽然 iframe 标记显示在 html 中,但它的内容却没有。

这是我用来获取浏览器控件的内部 html 的代码,它只是将 iframe 标记显示为空(当它内部应该有另一个文档时):

        GeckoHtmlElement element = null;
            var geckoDomElement = webBrowser.Document.DocumentElement;
            if (geckoDomElement is GeckoHtmlElement)
            {
                element = (GeckoHtmlElement)geckoDomElement;
                var innerHtml = element.InnerHtml;
            }

之前我使用类似于以下代码的代码来访问可以正常工作的各个元素:

GeckoDocument checkDoc = (GeckoDocument)webBrowser.Window.Document;
var x = (checkDoc.GetElementsByTagName("a").Where(b => b.Id == "ipt-form-format-aside").First());

我能够获取单个元素并更改它们的值/触发事件等,而主 html 文档没有问题,但 iframe 中的任何内容都无法获取元素。我想也许 Iframe 尚未加载或类似的东西。有没有办法强制控件在尝试访问其元素之前等待 I 框架加载?

【问题讨论】:

标签: c# iframe geckofx


【解决方案1】:
string content = null;
var iframe = webBrowser.Document.GetElementsByTagName("iframe").FirstOrDefault() as Gecko.DOM.GeckoIFrameElement;
if(iframe != null)
{
    var html = iframe.ContentDocument.DocumentElement as GeckoHtmlElement;
    if (html != null)
        content = html.OuterHtml;
}

【讨论】:

  • 不幸的是,这不起作用,尝试访问元素时 iframe 没有完全加载。最终我使用了另一种方法,不需要使用这个。
【解决方案2】:

我只是为其他可能遇到此问题的人发布此问题

foreach (GeckoIFrameElement _E in geckoWebBrowser1.Document.GetElementsByTagName("iframe"))
{
    if (_E.GetAttribute("class") == "testClass")
    {
        var innerHTML = _E.ContentDocument;

        foreach (GeckoHtmlElement _A in innerHTML.GetElementsByTagName("input"))
        {
            _A.SetAttribute("value", "Test");
        }
    }
}

【讨论】:

    【解决方案3】:

    我在尝试访问 iframe 时遇到了类似的问题,所以我使用了

    checkDoc.Window.Frames(1)
    

    而不是

    checkDoc.GetElementsByTagName("iframe")
    

    括号内的值(即此处的 1)取决于您的索引

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多