Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2012, 00:08
Профессор
Отправить личное сообщение для lamer Посмотреть профиль Найти все сообщения от lamer
 
Регистрация: 08.02.2012
Сообщений: 216

Запуск кода с фрейма, код в родительском окне - КАК ?
Здравствуйте, подскажите пожалуйста, как запустить javascript код который находиться в родительском окне, а кнопка для запуска находиться во фрейме на той же странице ? (Все находиться на одном домене)
Пример кода:
Вот родительское окно, в нем код с функцией, кнопка запуска алерта находиться на странице 1.htm т.е. во фрейме
<html>

<head>

</head>

<body>
<script>
function cliKo() { alert('ok'); }
</script>
<br>
<iframe nane="frame1" src="1.htm"></iframe>
</body>

</html>


Вторая страница, тут находиться кнопка для запуска алерта:

<html>

<head>

</head>

<body>
<input type="button" value="click" onclick="cliKo();">
</body>

</html>



Подскажите как запустить код ?
Ответить с цитированием
  #2 (permalink)  
Старый 05.05.2012, 00:24
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

onclick="top.cliKo();">
Ответить с цитированием
  #3 (permalink)  
Старый 05.05.2012, 01:08
Профессор
Отправить личное сообщение для lamer Посмотреть профиль Найти все сообщения от lamer
 
Регистрация: 08.02.2012
Сообщений: 216

Сообщение от vadim5june Посмотреть сообщение
onclick="top.cliKo();">
Спасибо, так работает.
Но вариант с проверкой почему то не хочет работать, подскажите где ошибка пожалуйста.

Родительская страница с кодом:
<html>

<head>

</head>

<body>
<script>
function eLogin() {
if ((parent.document.getElementById('username').value=='') || (parent.document.getElementById('userpass').value==''))
{alert('ERROR.');return false;}
setLogin();
return false;
};

function setLogin() { alert('Login'); }
</script>
<br>
<iframe nane="frame1" src="1.htm"></iframe>
</body>

</html>


Страница с фреймом с кнопкой запуска кода:
<html>

<head>

</head>

<body>
<input type="text" id="username"><br>
<input type="text" id="userpass"><br>
<input type="button" value="click" onclick="top.eLogin()">
</body>

</html>


Пробовал разные варианты:
parent.document.getElementById('username').value
window.parent.document.getElementById('username'). value
top.document.getElementById('username').value
window.top.document.getElementById('username').val ue

Не хочет работать, подскажите пожалуйста где ошибка ?
Ответить с цитированием
  #4 (permalink)  
Старый 05.05.2012, 09:19
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от lamer
как запустить javascript код который находиться в родительском окне, а кнопка для запуска находиться во фрейме на той же странице
Родительское окно.
В него загружена какая-то страница, в которой создаётся фрейм (этот фрейм будет дочерним по отношению к родительскому окну).
Во фрейм загружена какая-то страница, в которой создаётся кнопка.
То есть фрейм находится на одной странице (загруженной в родительское окно), а кнопка находится на другой странице (загруженой в дочерний фрейм), а не так как вы написали.

Главное понимать к какой странице относится скрипт, тогда станет понятно как обращаться к элементам этого скрипта: глобальные переменные и функции скрипта являются соответственно свойствами и методами того окна (объекта window), в которое загружена страница с этим скриптом.

У вас все скрипты находятся на странице, которая загружена в родительское окно, поэтому при обращении к этим скриптам (переменным, функциям) из дочернего фрейма нужно использовать приставку parent (в данном случае также подойдёт и top), содержащую ссылку на родительское окно для этого фрейма (то есть окно, в которое загружена страница, на которой содержится код создания этого фрейма).

Когда вы обращаетесь к содержимому фрейма из родительского окна можно начать с имени этого фрейма (есть также другие способы обращения и, кстати, name пишется через m), тогда как вы начали с parent (parent - ссылка на родительское окно, в данном случае на само себя).

Проверить на локальном компьютере можете через IE, а в хроме, например, не даст политика безопасности (загрузив страницы на сервер по идее всё должно заработать), можно также проверить через denwer.

Последний раз редактировалось bes, 05.05.2012 в 09:25.
Ответить с цитированием
  #5 (permalink)  
Старый 05.05.2012, 09:27
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

А почему вы не делаете проверку во фрейме прям-так лучше-если все же надо так то вы неправильно делаете
лучше всего передать login и пароль в виде параметров
onclick="top.eLogin(document.getElementById('usern ame').value,document.getElementById('userpass').va lue))";
а в функции eLogin(name,pass){alert(name),alert(pass)}
Ответить с цитированием
  #6 (permalink)  
Старый 05.05.2012, 09:32
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

если надо из родительского документа обратиться в дочерний то так
window.frames[0].document.body
но это некроссбраузерный вариант-на какихто браузерах не будет работать-под рукой кроссбраузерного нет
ну и как писали выше с локального диска в хроме вообще не обратишся
Ответить с цитированием
  #7 (permalink)  
Старый 06.05.2012, 02:15
Профессор
Отправить личное сообщение для lamer Посмотреть профиль Найти все сообщения от lamer
 
Регистрация: 08.02.2012
Сообщений: 216

Спасибо vadim5june за помощь, реализовал вот так:

<script>
function eLogin() {
if ((document.getElementsByTagName('iframe')[0].contentWindow.document.getElementById('username').value=='') || (document.getElementsByTagName('iframe')[0].contentWindow.document.getElementById('userpass').value==''))
{alert('ERROR.');return false;}
setLogin();
return false;
};
</script>


Особенно помог пример
window.frames[0].document.body

А на счет проверки прямо в фрейме, так это просто пример, функция имеет абсолютно другой вид =)
Ещё рас спасибо вам за помощь.
Ответить с цитированием
  #8 (permalink)  
Старый 06.05.2012, 15:15
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от lamer
Особенно помог пример
window.frames[0].document.body
lamer, мой пост вы по ходу не читали.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно сократить такую строчку кода. saturn Элементы интерфейса 2 30.11.2011 21:03
как узнать html код документа, подгруженного в iframe alexKniaz Events/DOM/Window 7 03.12.2008 12:37
Как выдернуть ссылки из фрейма Leonline Общие вопросы Javascript 9 31.05.2008 01:34
как разодрать код scuter Общие вопросы Javascript 1 25.04.2008 21:39
Как запретить уход из фрейма в top-окно? sturm Общие вопросы Javascript 6 20.04.2008 04:20