Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
 Аватар для melihovgv
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842

Запутался между open и opener. Как отправить данные из opener в open

30.10.2012, 01:07. Показов 3737. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Открываю в родители новое окно через open
JavaScript
1
var openWindow = open("up_img.php","up_img","width=600,height=430");
В дочернем окне имеется обычная форма
HTML5
1
2
3
4
<form method="post" action="test.php">  
<b>Альтернативный текст (Alt):</b><input type="text" name="alt" size="40" >
<input type="submit" name="upload1" id="upload1" value="Готово" onclick="window.close()" > 
</form>
Если из дочерней формы отправляю $_POST, то все ок, а как из дочерней формы отправить $_POST в родитель?
Уже неделю мучаюсь над этим вопросом.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2012, 01:07
Ответы с готовыми решениями:

Не работает opener
Всем привет. Есть url:http://mysite.com/index/main/index111.html Физически файла index111.html и папок таких нет, url формируется...

window.opener
&lt;html&gt; &lt;head&gt; &lt;title&gt;Первая форма&lt;/title&gt; &lt;script&gt; function display() { ...

Ошибка после выполнения window.opener.location.reload
Привет! После выполнения команды window.opener.location.reload IE выдает msgBox 'The page cannot be refreshed without resending the...

28
 Аватар для melihovgv
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
01.11.2012, 15:37  [ТС]
Студворк — интернет-сервис помощи студентам
Господа, я понимаю, что Вам интересно поспорить, но как быть мне?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
01.11.2012, 15:43
Цитата Сообщение от melihovgv Посмотреть сообщение
но как быть мне?
а что у вас?
функцию myFunc () в конце-концов пристроили на родительской странице?
заработало?
------

и ещё вопросик
я посоветовал вам сохранить файл для дочернего окна в html-формате (с расширением *.html)
вы в своём примере представили этот файл как d.php
можно поинтересоваться - а зачем?
0
 Аватар для melihovgv
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
01.11.2012, 16:14  [ТС]
r.php - родитель
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<script type="text/javascript">
function HTML_edit( action )
{
        area = document.getElementById('textfield'); // получаем объект поля ввода
        area.focus(); // перед началом работы переводим фокус на текстарею (иначе в IE не будет работать)
 
        // получаем выделенный текст и подготавливаем его к обработке
        if( document.getSelection )
        {
            document.getSelection();
 
            avalue = area.value;
            sel_length = avalue.length;
            sel_start = area.selectionStart;
            sel_end = area.selectionEnd;
            
            left_side_text = avalue.substring(0, sel_start);
            selected_text = avalue.substring(sel_start, sel_end);
            selected_text1 = avalue.substring(0, sel_start);
            right_side_text = avalue.substring(sel_end, sel_length);
        }
        // для остальных браузеров (IE), не понимающих работу с «выделениями», приведенную выше
        else if( document.selection ) selected_text = document.selection.createRange().text;
        
        // обрабатываем выделенный текст на основе переданного аргумента action
        switch( action )
        {
 
case 'tegImage2':
if( !selected_text )
{
var GlobalStroka = ''; 
 window.open ('d.html', '_blank', 'width=654, height=234');
 function myFunc (alternative_string)
{
GlobalStroka = alternative_string;
// переменная GlobalStroka получит своё значение
// только если функция запустится
// а запускается она из дочернего окна
// и оттуда же получает значение
alert ("В текстовое поле дочернего окна вы ввели \"" + GlobalStroka + "\"");
}
}
break;
 
        }
        // возвращаем результаты работы функции обратно в поле ввода текста
        if( prefix != null && suffix != null )
        {
            if( document.getSelection ) area.value = left_side_text + prefix + selected_text + suffix + right_side_text;
            else if( document.selection ) document.selection.createRange().text = prefix + selected_text + suffix;
        }
    }
    
</script>

HTML5
1
2
3
<input type="button" value="IMG2"  onclick="HTML_edit('tegImage2')"  />
<br />
<textarea cols="115" rows="15" wrap="off" id="textfield"></textarea>
d.html -дочернее окно
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Окошко</title>
</head>
<body>
<h2>Введи альтернативный текст! А то хуже будет...</h2>
<input id="myID">
<input type="button" value="Нажми, когда введёшь"
       onclick="alert ('Молодец, что ввёл!');
                window.opener.myFunc (document.getElementById ('myID').value);
                self.close ()">
</html>
</html>
Проверяю в яндекс хром
Не работает.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
01.11.2012, 16:35
"я вам сичас один умный вещ скажу, толька ти не абижайся!" (с)

1. <script>вот это всё --- глобальный контекст</script>

в глобальном контексте к любой переменной можно обратиться через объект window
--------

2. <script>глобально...глобально... function FuncName () {локально}...глобально...глобально</script>

сама функция - её имя funcName () - она ещё в глобальном контексте

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

единственная связь локального с глобальным - это через круглые скобки после имени функции - там могут быть параметры (из глобального контекста передаются) и внутри функции они превращаются в аргументы
=====

вы мою функцию засунули в "чёрный ящик", спрятали... не видит её объект window
0
 Аватар для melihovgv
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
01.11.2012, 16:43  [ТС]
kalabuni, я где-то понимаю, но может показать рабочий пример?Из моих данных.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
01.11.2012, 16:56
блин, я вам даже спецстраницу сделал -- что может быть ещё "рабочее"?

Не по теме:



слушайте, есть такое понятие - "не дано человеку!"

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

ну так я и не занимаюсь всеми вышеперечисленными делами, ибо понимаю, что "не дано мне"
а прозябаю на ниве программирования
да ещё в шахматы играю - лузеров в выходные в шахматном клубе на деньги опускаю


имхо, программирование - оно "не ваше", вам не кажется?
мей би, в вас художник умирает?
или танцор?
или режиссёр голливудский?
или из вас получится лучший в мире фрезеровщик
попробуйте, а?

0
 Аватар для melihovgv
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
01.11.2012, 17:02  [ТС]
kalabuni, давайте без лирики!
Исходя из Ваших слов нужно данную переменную alert ("В текстовое поле дочернего окна вы ввели \"" + GlobalStroka + "\""); вынести за функцию.


JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
case 'tegImage2':
if( !selected_text )
{
var GlobalStroka = ''; 
 window.open ('d.html', '_blank', 'width=654, height=234');
 function myFunc (alternative_string)
{
GlobalStroka = alternative_string;
// переменная GlobalStroka получит своё значение
// только если функция запустится
// а запускается она из дочернего окна
// и оттуда же получает значение
 
}
if (GlobalStroka==true){alert ("В текстовое поле дочернего окна вы ввели \"" + GlobalStroka + "\"");}
}
break;
И так не работает.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
01.11.2012, 18:28
финиш

я пишу о функции myFunc () и о её месте в вашем скриптовом блоке,
а вы почему-то про строку показа глобальной переменной...
-----

1. найдите в вашем коде родительской страницы самый первый открывающий тег <script>
2. сразу после этого открывающего тега, начиная со следующей строчки напишите код моей функции myFunc (), чтобы получилось следующее
JavaScript
1
2
3
4
5
6
<script>
function myFunc (alternative_string)
{
GlobalStroka = alternative_string;
} 
... а вот тут всё ваше
3. ваши последние изменения кода c alert () отмените

4. ко мне, пожалуйста, с вашими вопросами не обращайтесь... хотя бы недельку, я от вас должен отдохнуть
0
 Аватар для melihovgv
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
01.11.2012, 19:48  [ТС]
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<script type="text/javascript">
var GlobalStroka = ''; 
function myFunc (alternative_string)
{
GlobalStroka = alternative_string;
// переменная GlobalStroka получит своё значение
// только если функция запустится
// а запускается она из дочернего окна
// и оттуда же получает значение
//alert ("В текстовое поле дочернего окна вы ввели \"" + GlobalStroka + "\"");
}
 
function HTML_edit( action )
{
        area = document.getElementById('textfield'); // получаем объект поля ввода
        area.focus(); // перед началом работы переводим фокус на текстарею (иначе в IE не будет работать)
 
        // получаем выделенный текст и подготавливаем его к обработке
        if( document.getSelection )
        {
            document.getSelection();
 
            avalue = area.value;
            sel_length = avalue.length;
            sel_start = area.selectionStart;
            sel_end = area.selectionEnd;
            
            left_side_text = avalue.substring(0, sel_start);
            selected_text = avalue.substring(sel_start, sel_end);
            selected_text1 = avalue.substring(0, sel_start);
            right_side_text = avalue.substring(sel_end, sel_length);
        }
        // для остальных браузеров (IE), не понимающих работу с «выделениями», приведенную выше
        else if( document.selection ) selected_text = document.selection.createRange().text;
        
        // обрабатываем выделенный текст на основе переданного аргумента action
        switch( action )
        {
 
case 'tegImage2':
if( !selected_text )
{
//if(myFunc(GlobalStroka)===true){alert(""+ GlobalStroka +"");}
window.open ('d.html', '_blank', 'width=654, height=234');
prefix = '<img src="/foto/'+ myFunc() +'">';
suffix = '\n';
}
break;
 
        }
        // возвращаем результаты работы функции обратно в поле ввода текста
        if( prefix != null && suffix != null )
        {
            if( document.getSelection ) area.value = left_side_text + prefix + selected_text + suffix + right_side_text;
            else if( document.selection ) document.selection.createRange().text = prefix + selected_text + suffix;
        }
    }
    
</script>
HTML5
1
2
3
<input type="button" value="IMG2"  onclick="HTML_edit('tegImage2')"  />
<br />
<textarea cols="115" rows="15" wrap="off" id="textfield"></textarea>
Действительно он рабочий)Подробнее ответа не нашел)
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Окошко</title>
</head>
<body>
<h2>Введи альтернативный текст! А то хуже будет...</h2>
<input id="myID">
<input type="button" value="Нажми, когда введёшь"
       onclick="window.opener.myFunc (document.getElementById ('myID').value);
                self.close ()">
</html>
</html>

Последний вопрос, как передать значение сюда prefix = '<img src="/foto/'+ myFunc() +'">';???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2012, 19:48
Помогаю со студенческими работами здесь

Не отрабатывает opener.location.reload() для Internet Explorer
Пожалуйста подскажите почему у меня возникает ошибка при попытке обновить страницу из которой было вызвано модальное диаголовое окно в...

[ILINK32 Error] Fatal: Could not open .\Debug\Win32\Variant_1.ilf (project already open in IDE?)
Fatal: Could not open .\Debug\Win32\Variant_1.ilf (project already open in IDE?) на русском Fatal: Не удалось открыть \ Debug \...

Error: EMFILE: too many open files, open
Добрый день, подскажите плииз! Поймал ошибку &quot;Error: EMFILE: too many open files, open&quot; Чем это может грозить и как с этим бороться?...

Как настроить сеть между компами Linux open suse 11.3
Как настроить сеть между компами Linux open suse 11.3 есть интернет UTP идет с хаба с этого же кабеля надо взять сеть


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru