window.frames - список
<frame> і <iframe>
window.frames
frames масивоподібний об'єкт об'єкта window в якому міститься список
<frame> і <iframe>які є на поточній веб-сторінці.
Звертатися до фреймів можна по індексу за допомогою квадратних дужок.
frames[0]; //повертає фрейм по індексу 0
Також до фрейму можна звертатися по його назві, яку вказано в атрибуті name:
<iframe name="test_frames" src=""></iframe>
frames['test_frames']; //по name
frames.test_frames; //по name другий спосіб
frames[0]; // по індексу
Через фрейм можна звертатися безпосередньо до об'єкта window фрейму.
frames['test_frames'].window;
frames['test_frames'].scrollTo(0, 300);
alert( frames['test_frames'].location.href )
Зверніть увагу що за політикою безпеки браузера забороняється доступ до об'єкта window фрейму у випадку коли домен фрейму є іншим від домену сторінки на якому виконується JavaScript.
Приклад виникнення помилки якщо звертатися до window фрейму з іншого домену:
document.getElementsByName('test_frames')[0].onload=function(){
var f= frames['test_frames'];
alert( f.window.name ); // Error: Permission denied to access property "name"
}
document.getElementsByName('test_frames')[0].src="http://ukr.net/";
Браузери забороняють читати URL адресу фрейму з іншого домену, але дозволяють її змінювати:
frames['test_frames'].window.location.href='http://яваскрипт.укр';
f= frames['test_frames'];
f.document.write('test frames');
Якщо необхідно робити маніпуляції з document фрейму то потрібно це робити після завантаження фрейму:
document.getElementsByName('test_frames')[0].onload=function(){
// фрейм завантажено
var f= frames['test_frames'];
f.document.getElementsByTagName('p')[0].innerHTML='Тест фрейму.';
}
document.getElementsByName('test_frames')[0].src="http://яваскрипт.укр/location";