Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.09.2013, 17:50
Новичок на форуме
Отправить личное сообщение для ANDRUkomod Посмотреть профиль Найти все сообщения от ANDRUkomod
 
Регистрация: 08.09.2013
Сообщений: 9

Загрузка JS библиотек в iframe и вызов функции от имени родителя
Доброго всем времени суток. Есть такая задача:
два файла
index.html
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<iframe id="frame1" src="frame1.html"></iframe>
<button onClick="document.getElementById('frame2').contentWindow.Run();">run</button> 
</body>
</html>


и frame1.html
<!DOCTYPE html><html><head><title></title>
<script>
window.Run =  function ()
{
body=document.getElementsByTagName("body")[0];
alert(body.innerHTML);
}
</script></head><body>frame</body></html>

Данная конструкция работает и по клику на кнопку нам выдаст алертом слово "frame".
Как сделать, чтобы алерт выдавал body родителя а не iframe???
функцию Run() править запрещено, поэтому не предлагайте :
window.Run =  function ()
{
body=window.parent.document.getElementsByTagName("body")[0];
alert(body.innerHTML);
}

и конструкция
window.parent.Run =  function (){...}
тоже не потходит.


Как из iframe обьяснить родителю что у него есть функция Run() и она будет работать от имени родителя в родительском окне, не трогая iframe??????????????
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2013, 18:15
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 2,932

Сообщение от ANDRUkomod
window.parent.Run =  function (){...}
Чёйта? Вполне работоспособный вариант.
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2013, 18:47
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<iframe id="frame1" name="frame1"  src="frame1.html"></iframe>
<button onClick="frame1.Run();">run</button> 
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2013, 18:51
Новичок на форуме
Отправить личное сообщение для ANDRUkomod Посмотреть профиль Найти все сообщения от ANDRUkomod
 
Регистрация: 08.09.2013
Сообщений: 9

НЕТ.
Все это приведет к алерту "frame", а не контента body родителя.
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2013, 02:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ANDRUkomod,
Сделайте как советую, - Выложите ссылку на тестовую страницу
frame1.Run() - Запуск функции во фрейме, если Вы боитесь запутаться - можно поменять имя фрейма на иное

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<iframe id="frame1" name="frame001"  src="frame1.html"></iframe>
<button onClick="frame001.Run();">run</button> 
</body>
</html>

Во фрейме такая функция
window.Run =  function ()
{
var parent_body = window.parent.document.body;
alert(parent_body.innerHTML);
}

Последний раз редактировалось Deff, 09.09.2013 в 02:27.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
iframe как правильно динамически встаить с помощью js syegorius Events/DOM/Window 7 05.01.2012 08:24
Скобки после имени функции. В чем разница, если они есть и если их нет? jsuse Общие вопросы Javascript 2 19.11.2011 14:11
JS классы - как объединить функции в класс olga153b Events/DOM/Window 3 01.11.2011 12:13
Вызов событий из js функции Destrifer Общие вопросы Javascript 5 29.11.2008 14:28
вызов функции, из JS генерируемого на сервере subaru AJAX и COMET 1 12.07.2008 12:44