Как правильно в Мазилле обращаться к фреймам и к их объектам?
Имеется следующий HTML-файл с фреймовой структурой:
<html> <title>Электронное учебное издание по курсу "Разработка и стандартизация программных средств и информационных технологий"</title> <frameset rows="34,*" frameborder="0" framespacing="0"> <frame src="!menu.html" NAME="menuFrame" marginwidth="0" marginheight="0" scrolling="no" noresize> <frameset cols="260,*"> <frame src="!category.html" NAME="listFrame" marginwidth="0" marginheight="0"> <frameset rows="*,36" frameborder="0" framespacing="0"> <frame src="Vvedenie.html" marginwidth="0" marginheight="0" name="contentFrame" border=2 > <frame src="!BottomMenu.html" NAME="menuFrame2" marginwidth="0" marginheight="0" scrolling="no" noresize> </frameset> </frameset> </frameset> </html> Проблема в следующем: В каждом документе, кот. загружаются во фрейм contentFrame нужно разместить скрипт: <script> function URL() { parent.menuFrame2.document.myForm.nav.value="TEXT"; } </script> <body onload="URL()"> Данный скрипт должен менять значение поля <TEXTAREA> во фрейме menuFrame2: <html> <title>menuFrame2</title> <link rel="stylesheet" type="text/css" href="css/!MainStyle.css"> <head> <script> var url=parent.contentFrame.location function LoadPrevious() { if (document.myForm.nav.value=="TEXT") {url.href="Part_3/pr_work1.html"} } function LoadNext() { if (document.myForm.nav.value=="TEXT") {url.href="Part_3/pr_work3.html"} } function scrollit(){ for (I=1; I>=0; I--){ parent.contentFrame.scroll(1,I) } } </script> </Head> <body> <table class="ramka2" width=100% border="0" cellspacing="0" cellpadding="0"> <tr> <td> <table border="0" cellspacing="0" align="center" valign="center" cellpadding="0"> <td width="77" align="left" height="26"> <a style="display:" name="previous" class="button" href="#" onclick="LoadPrevious()"><Назад</a> </td> <td width="76" align="center"> <a class="button" href="#" onclick="scrollit()" title="В начало документа">Наверх</a> </td> <td width="76" align="left"> <a name="next" class="button" href="#" onclick="LoadNext()">Далее></a> </td> </table> </td> </tr> </table> <form name="myForm" style="display: none;"><TEXTAREA name="nav" rows=4 cols=70></TEXTAREA></form> </body> </html> И далее в зависимости от загруженного документа в contentframe должны меняться ссылки на кнопках во фрейме menuFrame2... НО в Firefox не меняет значение поля <TEXTAREA>, и следовательно в нем ничего не работает, а в Opera и IE все меняет и работает без проблем... Firebug пишет следуещее: Permission denied to get property Window.document [Break on this error] parent.menuFrame2.document.myForm.nav.value="TEXT"; Уже запарился с этим Firefox :mad: |
Вы используете MSDOM-методы, поэтому они и не работают в Firefox
Для получения коллекции элементов по имени нужно использовать: document.getElementsByName('name') Для получения одного элемента по идентификатору нужно использовать: document.getElementById('elementId') тогда ваши скрипты будут работать как в IE, так и в FF и любых других браузерах. |
Пробывал писать и так:
parent.menuFrame2.document.getElementByName('myForm').getElementByName('nav').value="TEXT"; и так: parent.menuFrame2.document.getElementByName('myForm').nav.value="TEXT"; Все равно не работает((( вобще нигде ни в Opera ни IE... Что я не так делаю? |
Прочитайте самые основы http://javascript.ru/start/dom, чтобы не писать таких глупостей.
|
Octane
Спасибо за помощь... А эту ссылку я уже перечитал ни 1 раз, и у меня ни чего не получается, у меня тока работают, как вы писали MSDOM-методы в Опере и IE... Неужели так трудно тыкнуть пальцем на мою ошибку? Потомучто я действительно сам ее не могу найти(( |
Меня лично смущает "parent." предполагается, что загрузившееся во фрейме окно будет знать куда оно загрузилось?
Попробуйте с помощью "parent." обратиться к какому-нибудь элементу через getElementById - мне кажется не сработает. И нету такого "getElementByName", есть getElementById. |
Parent здесь ни при чем это ff с фреймами не контачит, как я уже ни пробовал то в консоли пишет что не может найти такого элемента то вообще ни чего не пишет и не работает.
Где то я видел как к фреймам правильно обращаться вот теперь лажу, ищу. |
Часовой пояс GMT +3, время: 14:16. |