Количество фреймов IHTMLDocument2 / IHTMLDocument3 различно

Я пытаюсь использовать автоматизацию IE для обработки различных внутренних веб-страниц. На некоторых из этих страниц используются фреймы и фреймы, поэтому нам также необходимо иметь возможность обрабатывать данные внутри этих фреймов.

Я столкнулся с проблемами, если фреймы или фреймы не отображают контент в том же домене, что и родительский документ, и это нормально.

Однако появилось кое-что еще, чего я не могу понять.

Если я перейду (например) на http://www.gmail.com/ и перейду на страницу входа, используя IHTMLDocument2.frames.length возвращает 1, даже если фреймы отсутствуют. IHTMLDocument3.getElementsByName ("iframe"). Length возвращает 0, как и ожидалось.

Кажется, это происходит только в IE9. IE6 и IE7 работают так, как мы ожидаем, и мы еще не тестировали IE8.

Кто-нибудь знает, почему это происходит? Очевидно, кто-то считает фактические теги, но где ITHMLDocument2.frames.length постоянно получает 1? Это настройки безопасности и т. Д.?


person DFriend    schedule 27.02.2012    source источник


Ответы (1)


Согласно моему элементу Inspect в 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, а у других его нет; возможно, поэтому IHTMLDocument ведет себя по-другому, но это всего лишь предположение ...

Однако вы должны помнить, что оба этих интерфейса старые, IE4 и 5 соответственно.

person Russ Clarke    schedule 27.02.2012