Это кажется действительно простым, но как мне вызвать функцию javascript, определенную в html верхнего уровня, из дочернего фрейма?

top html doc
 - 1st level frame
    - 2nd level frame

Мой лучший документ HTML имеет функцию с именем testFn (). Во фрейме 2-го уровня у меня есть кнопка с onclick="top.testFn();", но это не вызывает testFn (). В Firebug, если я использую часы для выполнения top.testFn();, он говорит, что TypeError: testFn () не является функцией.

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

6
Rory 18 Июн 2010 в 15:23

3 ответа

Лучший ответ

Ваш код выглядит правильно. Если он говорит testFn() is not a function, то, возможно, это не так. Вы пытались установить onload="testFn();" в <BODY> верхней рамки, чтобы убедиться, что это работает?

Возможна ошибка JavaScript, из-за которой код, создающий вашу функцию testFn, не был успешно завершен.

4
David Hedlund 18 Июн 2010 в 11:32

На самом деле, именно так вы и делаете.

Хитрость заключается в том, что в другом месте javascript на этой HTML-странице верхнего уровня нет синтаксической ошибки :-)

0
Rory 18 Июн 2010 в 11:31

Вы пытались назвать это так:

OnClick = " parent.parent.testFn ( ) ; "

Я предполагаю, что у вас есть 2-й кадр внутри 1-го кадра.

2
Dez 18 Июн 2010 в 11:30