четверг, 21 октября 2010 г.

Межфреймовое взаимодействие by javascript

Столкнулся с объектом в коде яваскрипта по имени top, как выяснилось это не доморощенный обьект, а обьект в яваскрипте по-умолчанию.

Он(если более точно window.top) означает окно браузера, которое содержит всю иерархию окон(вложенных фреймов) и является корневый окном. К этому объекту можно обратиться из любого вложенного фрейма и получить ссылку на корневое окно.


Понятное дело можно потом манипулировать дом-деревом, например
window.top.document.body.style.border = "1px solid red"

Можно перемещаться по иерархии вложенных фреймов вот так:
window.parent.parent.document.getElementById("element1").style.display = "none". 
Это было на два уровня вврех.

Можно также перемещаться и вниз... Для этого у каждого окна есть ссылка на все го фремы(frame, iframe) в таком виде:
window.frames // это массив.

Вот так мы сможем пройтись вниз на нужный уровень, зная конечно иерархию окон на нашей странице:
window.frames[2].frames[0].document.getElementById("myInput").value = "Ancestor left this text here".

Но для злодеев тут все не так радужно, как казалось бы:) Дело в том, чтобы яваскрипт мог безпроблемно так гулять по фреймам, нужно чтобы они все были из одного домена, кросдоменные манипуляции между фремами запрещены - это реализовано в браузерах:)))

Комментариев нет:

Отправить комментарий