Как правильно в Мазилле обращаться к фреймам и к их объектам?
Имеется следующий 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, время: 04:13. |