Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 22.11.2010, 18:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от javascript_pupil
прервать выполнение скрипта до получения нового значения
Никак.

Функция, которую вы хотите прервать, асинхронная. Вместо возврата значения она должна принимать callback-функцию, которую и вызывать со значением, которое необходимо вернуть.

Вместо
function foo() {
    return 5;
}
alert(foo());

Надо
function foo(callback) {
    callback(5);
}
foo(function(res) {
    alert(res);
})
Ответить с цитированием
  #12 (permalink)  
Старый 22.11.2010, 18:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,782

javascript_pupil, таки не в том скрипте ты это делаешь... Пиши скрипт в дочернем окне. Именно он и будет менять родительские данные...

Скрипт в родительском должен закончить работу, если вызвано дочернее окно...

Далее без конкретики и тестовых примеров видно дело не продвинется...
Ответить с цитированием
  #13 (permalink)  
Старый 23.11.2010, 01:55
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 163

Kolyaj, честно говоря ничего не понял из примера.

Сообщение от ksa
Пиши скрипт в дочернем окне. Именно он и будет менять родительские данные
Это оказалось проще всего, но я наткнулся на другие грабли. Сейчас объясню где: изменил расположение if/else так, что либо скрипт с уже определенными именами выполняется, либо при выборе нового файла открывается новое окно. Всё замечательно и прекрасно работает. Но! вернуть opener'ом данные в select невозможно, да и смысла нет т.к. их потом не выбрать родительским javascript'ом. Вернуть opener как я понял можно только в данные формы, если же я это успешно делаю, то название файла замещает текст в поле textarea, а мне нужно, чтобы opener не замещал, а добавлял его к уже имеющемуся в форме, иначе вся эта суета теряет смысл. Я так понимаю, что это невозможно?
Ответить с цитированием
  #14 (permalink)  
Старый 23.11.2010, 03:02
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 163

я так понял, что мне проще перегружать AJAX'ом выпадающий список, вызвав соответствующую функцию после загрузки нового файла в дочернем окне. В связи с этим возникли дополнительные вопросы:
1. Как javascript'ом проверить является ли окно дочерним или нет? Т.е. мн необходимо запускать функцию только в том случае, если данное окно было открыто родительским. Если же окно не является дочерним, данная функция запускаться не должна.
2. Пока не могу понять, как AJAX'ом перезагрузить выпадающий список (всё это работает в перловом скрипте).

Последний раз редактировалось javascript_pupil, 23.11.2010 в 03:05.
Ответить с цитированием
  #15 (permalink)  
Старый 23.11.2010, 09:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,782

Сообщение от javascript_pupil
название файла замещает текст в поле textarea, а мне нужно, чтобы opener не замещал, а добавлял его к уже имеющемуся
таки пиши не так
document.getElementById('ид_textarea').value=<имя_файла>


а вот так
var val=document.getElementById('ид_textarea').value
document.getElementById('ид_textarea').value=val+<имя_файла>


Сообщение от javascript_pupil
вернуть opener'ом данные в select невозможно
Как так?
Добавь в селект еще один оптион и сделай его выбраным элементом...

Пора тебе делать тестовые примеры. Чего на пальцах-то тренироваться?

Сообщение от javascript_pupil
Как javascript'ом проверить является ли окно дочерним или нет?
Как вариант...

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style>
</style>
<script>
</script>
</head>
<body onload='alert((window.opener)? "дочернее": "родительское")'>
<input type='button' value='Go' onclick='window.open("tmp.html")'>
</body>
</html>

Пример скопировать в файл tmp.html и открыть в браузере...
Ответить с цитированием
  #16 (permalink)  
Старый 23.11.2010, 21:42
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 163

Всем спасибо за советы и участие!

Самым оптимальным вариантом оказалось использование Ajax'а для перезагрузки выпадающего меню, что собственно и было реализовано. Многие советы и подсказки в этой ветке были интересными и полезными, ещё раз спасибо - они пригодились!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать? При выходе мышкой за пределы окна браузера, начинает грузится другая стр alb Events/DOM/Window 13 01.09.2010 12:19
Как присвоить значение элементу формы материнского окна из дочернего? libinstyle Events/DOM/Window 15 28.07.2010 16:56
Может ли скрипт передать на сервер параметры окна :\ ForumReader Internet Explorer 5 21.07.2010 03:34
bind: как передать функции указатель на объект trial jQuery 4 25.05.2010 01:35
из дочернего окна вызывать методы родителського uzirig Общие вопросы Javascript 6 23.03.2008 12:33