Как вызвать функцию из другого фрейма?

 
0
 
JavaScript
ava
guest | 29.11.2003, 16:23
Прошу подсказать (если кто знает) - ситуация такая - есть страница из 2-х фреймов, в одном из них выписаны функции (JavaScript) А управление этими функциями нужно осуществлять из другого фрейма. Однако нигде не нашёл, как вызвать именно функцию. Если в форме во втором фрейме написано что-то вроде
onClick = "function_of_first_frame();" (там разные имена функций)
или
onClick = "parent.first_frame.function_of_first_frame();"

MSIE выдаёт ошибку "нулль или не является обьектом"

Ответы (11)
ava
Dr.Death | 29.11.2003, 18:03 #
Попробуй
Цитата


onClick = "javascript:parent.first_frame.function_of_first_frame();"

ava
MuToGeN | 30.11.2003, 05:43 #
> onClick = "javascript:parent.first_frame.function_of_first_frame();"

Не, это точно не то. javascript: - это что-то типа указания протокола в ссылках, так же как http:, ftp: или mailto:
ava
guest | 30.11.2003, 11:15 #
Проверил,
вот так: onClick =
"javascript:parent.first_frame.function_of_first_frame();


работает, при этом функция "видит" переменные, заданные в том же фрейме, что и она, но не видит их, если их имена передавать как параметры, то есть


onClick = "javascript:parent.first_frame.function_of_first_frame(value_of_first_frame);


невозможно,
в то время как задать функцию

function function_of_first_frame("Х"){alert(value_of_first_frame+"Х")};

возможно, и переменную она (вызванная из др. фреймов) видеть будет
ava
Alx | 07.12.2003, 10:35 #
Интересно, а я вот мо молодости весной хотел создать такую программку:

В первом маленьком фрейме поля:

URL
Цвет бэкграунда
Цвет текста
и т.д.

Добрый юзверь выберает, что хочет и таким образом бродит по рунету и меняет странички. Зашёл на яндекс, сделал розовый фон. Разве не щщщастье? Так было бы что-то вроде

window.frames("mainframe").document.bgColor=bgcolorsel.value


Что-то вроде этого, я уже не помню. Можеть здесь и есть ошибки, но когда я пытался это сделать, ничего не фурычило, я много менял вариантов!

Вот интересно, можно ли такое сделать?
ava
Secandr | 07.12.2003, 11:09 #
У меня так и не получилось вызвать функцию, но без проблем можно менять свойства какого либо объекта: parent.first_frame.form1.text1.value='bla.bla.alb.alb';

Так что можно просто повесить onCange на form1.text1 и вызывать функцию :)

P.S. Чистой воды извращение smile
ava
Alx | 07.12.2003, 11:23 #
Эт уж точно...)
ava
guest | 07.12.2003, 16:54 #
У меня так и не получилось вызвать функцию
Возможно, зависит от браузера (??)

P.S. Чистой воды извращение

Это почему собственно?
ava
Alx | 07.12.2003, 18:15 #
Ну потому что извращение!)
Чтобы вызваь функцию, надо изменить свойство ни в чем неповинного объекта, а потом написать, чтобы при при изменении свойства ентого объекта вызывалась функция! разве не извращение?))
ava
guest | 08.12.2003, 01:39 #
Цитата
Ну потому что извращение!)

Чтобы вызваь функцию, надо изменить свойство ни в чем неповинного объекта, а потом написать, чтобы при при изменении свойства ентого объекта вызывалась функция! разве не извращение?))


Если очень надо, то чем плохо, однако у меня так не получилось, MSIE реагирует только на такие onChange, которые пользователь производит мышью, или набирает с клавиатуры! (может, что-то не так сделал)
ava
Alx | 11.12.2003, 10:33 #
Я не знаю, что Вы сделали), но по-моему всё должно нормально работать... попробуйте с фокусом для type=text, действие onfocus... т.е.

parent.first_frame.form1.text1.focus()';

<input type="text" value="*" onfocus="func();" style="visibility:hidden;">

Кстати, я воть не очень хорошо помню на счёт взаимодействия фреймов, но разве перед parent не должно быть window или document...?
ava
Secandr | 11.12.2003, 16:22 #
нет перед parent ничего не ставиться.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  guest   MuToGeN   Dr.Death   Secandr   Alx
advanced
Отправить