0

我正在尝试使用一些 IE 自动化来处理各种内部网页。其中一些页面使用 iframe 和框架,因此我们也需要能够在这些框架内进行处理。

如果框架或 iframe 未在与父文档相同的域中显示内容,我会遇到问题,这很好。

但是,出现了其他一些我无法弄清楚的东西。

如果我访问(例如)http://www.gmail.com/并转到登录页面,使用 IHTMLDocument2.frames.length 会返回 1,即使没有 iframe 存在也是如此。IHTMLDocument3.getElementsByName("iframe").length 按预期返回 0。

这似乎只发生在 IE9 上。IE6 和 IE7 可以正常工作,我们还没有在 IE8 上进行测试。

有没有人知道为什么会发生这种情况?显然,一个正在计算实际标签,但 ITHMLDocument2.frames.length 一直在哪里得到 1?它是安全设置等...?

4

1 回答 1

0

根据我在 Chrome 中的检查元素(这里的 mac 无法测试 IE),gmail 至少有 5 个 iframe,这是 body 标签正下方的第一个,下面是几个。

<iframe style="position: absolute; width: 9em; height: 9em; top: -99em; " tabindex="-1" aria-hidden="true"></iframe>

也许您正在解析的 DOM 是其中一个 iframe 的来源,而不是外部页面本身?

实际上,其中一个 iframe 有一个子 iframe,但其他 iframe 没有;这可能是 IHTMLDocument 行为不同的原因,但这只是一个猜测......

不过你必须记住,这两个接口都是古老的,分别是 IE4 和 5。

于 2012-02-27T01:25:30.717 回答