Как получить элемент по идентификатору на странице, содержащей iframes, frame, frameset?

У меня есть страница, содержащая много дочерних элементов, таких как iframe, frameset, frame и т. д.

Я бы хотел функцию вроде document.getElementById(targetId), которая возвращает элемент, но и ищет в документах всех фреймов.

Я бы предпочел решение, которое не требует никаких расширений, таких как jQuery.


person ahoo    schedule 14.08.2011    source источник


Ответы (1)


Ты можешь сделать

my_iframe_reference.contentDocument.getElementById(targetId)

для поиска по id в одном кадре.

Если вы хотите выполнить поиск по всем кадрам, вы можете выполнить итерацию по массиву window.frames.

for(var i=0; i<window.frames.length; i++){
    var node = window.frames[i].contentDocument.getElementById('id');
    if(node) return node;
}
person hugomg    schedule 14.08.2011
comment
спасибо, я проверил это, но получаю эту ошибку contentDocument is undefined. мой браузер ie8 - person ahoo; 15.08.2011
comment
Вместо этого попробуйте contentWindow.document: stackoverflow.com/questions/1477547/< /а> - person hugomg; 15.08.2011
comment
frameworks[] возвращает только массив iframes без frames, по крайней мере, в IE - person ahoo; 15.08.2011