Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.01.2009, 20:01
Новичок на форуме
Отправить личное сообщение для $Dim@n$777 Посмотреть профиль Найти все сообщения от $Dim@n$777
 
Регистрация: 10.01.2009
Сообщений: 5

Как правильно в Мазилле обращаться к фреймам и к их объектам?
Имеется следующий 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:
Ответить с цитированием
  #2 (permalink)  
Старый 18.01.2009, 20:24
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Вы используете MSDOM-методы, поэтому они и не работают в Firefox

Для получения коллекции элементов по имени нужно использовать:
document.getElementsByName('name')


Для получения одного элемента по идентификатору нужно использовать:
document.getElementById('elementId')


тогда ваши скрипты будут работать как в IE, так и в FF и любых других браузерах.

Последний раз редактировалось Octane, 18.01.2009 в 20:26.
Ответить с цитированием
  #3 (permalink)  
Старый 18.01.2009, 21:34
Новичок на форуме
Отправить личное сообщение для $Dim@n$777 Посмотреть профиль Найти все сообщения от $Dim@n$777
 
Регистрация: 10.01.2009
Сообщений: 5

Пробывал писать и так:
parent.menuFrame2.document.getElementByName('myForm').getElementByName('nav').value="TEXT";

и так:
parent.menuFrame2.document.getElementByName('myForm').nav.value="TEXT";


Все равно не работает((( вобще нигде ни в Opera ни IE...
Что я не так делаю?
Ответить с цитированием
  #4 (permalink)  
Старый 18.01.2009, 22:26
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Прочитайте самые основы http://javascript.ru/start/dom, чтобы не писать таких глупостей.
Ответить с цитированием
  #5 (permalink)  
Старый 18.01.2009, 23:44
Новичок на форуме
Отправить личное сообщение для $Dim@n$777 Посмотреть профиль Найти все сообщения от $Dim@n$777
 
Регистрация: 10.01.2009
Сообщений: 5

Octane
Спасибо за помощь...
А эту ссылку я уже перечитал ни 1 раз, и у меня ни чего не получается, у меня тока работают, как вы писали MSDOM-методы в Опере и IE...
Неужели так трудно тыкнуть пальцем на мою ошибку? Потомучто я действительно сам ее не могу найти((
Ответить с цитированием
  #6 (permalink)  
Старый 19.01.2009, 11:11
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Меня лично смущает "parent." предполагается, что загрузившееся во фрейме окно будет знать куда оно загрузилось?

Попробуйте с помощью "parent." обратиться к какому-нибудь элементу через getElementById - мне кажется не сработает.

И нету такого "getElementByName", есть getElementById.
Ответить с цитированием
  #7 (permalink)  
Старый 29.03.2009, 23:32
Deight
 
Сообщений: n/a

Parent здесь ни при чем это ff с фреймами не контачит, как я уже ни пробовал то в консоли пишет что не может найти такого элемента то вообще ни чего не пишет и не работает.
Где то я видел как к фреймам правильно обращаться вот теперь лажу, ищу.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно оформить Send() Алекс97 AJAX и COMET 20 30.10.2008 19:19