我正在尝试使用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呢?这是一个安全设置,等等。?
发布于 2012-02-27 09:25:31
根据我在Chrome中的Inspect元素(mac这里不能测试IE),gmail至少有5个iframe,这是body标签下面的第一个,下面还有几个。
<iframe style="position: absolute; width: 9em; height: 9em; top: -99em; " tabindex="-1" aria-hidden="true"></iframe>也许您正在解析的DOM是这些Iframes之一的源,而不是外部页面本身?
实际上,其中一个iframe有一个子iframe,但其他的没有;这可能是IHTMLDocument表现不同的原因,但这只是一个猜测……
你必须记住,这两个界面都很古老,分别是IE4和5。
https://stackoverflow.com/questions/9458932
复制相似问题