0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
1

Как заставить родительское окно, после закрытия дочерного, выполнить функцию (переход на другой сайт)?

28.09.2015, 21:46. Показов 2130. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При нажатии на кнопку открывается новое окно через ф-цию:
Javascript
1
2
3
4
5
6
function okno(e) {
  var h = 400,
      w = 600;
 var newWin = window.open('file:///E:/fake_petition/bl9.html', 'file:///E:/fake_petition/bl9.html', 'scrollbars=1,height='+Math.min(h, screen.availHeight)+',width='+Math.min(w, screen.availWidth)+',left='+Math.max(0, (screen.availWidth - w)/2)+',top='+Math.max(0, (screen.availHeight - h)/2));
 
}
В дочерном окне есть кнопка:
HTML5
1
<button class="flat_button popup_login_btn button_big" id="install_allow" type="submit" name="submit" value="submit" onClick="lsl();">Войти</button>
После нажатия кнопки, дочерное окно должно закрыться(ну это я то могу) и передать информацию родителю, чтобы он выполнил скрипт(назовём его goaway), после чего должна произойти переадресация на другой сайт. В последней части и состоит моя проблема... Help please
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2015, 21:46
Ответы с готовыми решениями:

Как выполнить функцию после закрытия второй формы
Здравствуйте! Ну вообщем такой вопрос :)

Как заставить модальное окно выполнить редирект?
Здравствуйте. Подскажите как сделать, чтобы при нажатии на кнопку, появившееся модальное окно...

Как установить фокус на нужное окно после закрытия окна?
У меня есть родетельское окно и на нём есть кнопка, при нажатии на кнопку создаётся toplevel на нём...

Как скрыть родительское окно
Как скрыть родительское окно? Form1.Visible=false не работает!

25
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
28.09.2015, 22:05 2
можно через window.parent получить переменные родителя, но это только если обе страницы ваши, и они обе находятся на одном домене

а там в родителе сделать функцию типа ChildGetter, которая будет принимать сообщения
а в чилде вызывать так
Javascript
1
window.parent.ChildGetter(my oun params)
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
28.09.2015, 22:55  [ТС] 3
Страницы обе мои и домен один и тот же.
Насколько я понял, дочерное окно, при закрытии, должно получить параметры родителя и вызвать функцию ChildGetter(); - которая произведёт переадресацию?
Не совсем понятно, как это реализовать. Вот чисто для теста создал в родителе ф-цию
Javascript
1
2
3
function aler(){
alert(2);
}
В дочерный, при нажатии кнопки задействована ф-ция
Javascript
1
2
3
function trans(){
window.parent.aler();
}
Код создан на основе моих с гуглом представлений...
Так же залил результат на хостинг - http://albums-14308296.ru/my_test/wad.html (тренируюсь на примере вк).
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
28.09.2015, 23:09 4
Nikita07, вы правильно поняли мою идею, но только я так и не понял, функция работает или нет?
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
28.09.2015, 23:17  [ТС] 5
Нет, я ещё её специально залил для наглядности(http://albums-14308296.ru/my_test/wad.html).
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
28.09.2015, 23:20 6
Nikita07, то есть то, что iframe идёт с вк вы не знали

Добавлено через 28 секунд
Цитата Сообщение от BANO Посмотреть сообщение
но это только если обе страницы ваши, и они обе находятся на одном домене
вы почитайте, может всё-таки поймёте
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
28.09.2015, 23:24  [ТС] 7
Понял, фрейм не на моём домене.
Есть ли альтернатива?
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
28.09.2015, 23:30 8
когда-то мне помог
1
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
29.09.2015, 18:31  [ТС] 9
Спасибо, завтра попробую.

Добавлено через 18 часов 46 минут
Если я правильно понял, что в дочерном окне в ф-цие будет что-то вроде такого:
Javascript
1
 document.window.opener.postMessage("сообщение", "адрес моего сайта");
А в родительском вот такой скрипт:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function listener(event) {
  if (event.origin != 'адрес моего сайта') {
    // что-то прислали с неизвестного домена - проигнорируем..
    return;
  }
 
  alert( "получено: " + event.data );
}
 
if (window.addEventListener) {
  window.addEventListener("message", listener);
} else {
  // IE8
  window.attachEvent("onmessage", listener);
}
Ну а вместо data, передам, допустим, переменную, которая задействует в родителе нужную мне ф-цию.
Я правильно понимаю?
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 18:37 10
Цитата Сообщение от Nikita07 Посмотреть сообщение
Я правильно понимаю?
в общем да, но там можно не указывать окно
это как сеть

отправляется сообщение, если адресат его услышал, то он его принял, а если услышал кто-то кроме адресата, то тоже принял

короче там вы сами отильтровываете, что принимать, а что нет
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
29.09.2015, 19:35  [ТС] 11
Кнопка в дочерном
HTML5
1
<button class="flat_button popup_login_btn button_big" id="install_allow" type="submit" name="submit" value="submit" onClick="trans();">Войти</button>
ф-ция:
Javascript
1
2
3
4
5
6
7
8
 function trans(){
    
     var data = "2";
 document.window.opener.postMessage(data, "*");
 
 
 
}
Код родителя:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function listener(event) {
  if (event.origin != '*') {
    // что-то прислали с неизвестного домена - проигнорируем..
    return;
  }
 
  alert( "получено: " + event.data );
}
 
if (window.addEventListener) {
  window.addEventListener("message", listener);
} else {
  // IE8
  window.attachEvent("onmessage", listener);
}
Не работает. Может ли быть ошибка в способе определения и передачи переменной data(которая равна "2") ?
Пример - http://vk.relogins.com/my_test/wad.html
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 20:27 12
Javascript
1
2
3
4
 function trans(){
     var data = "2";
     window.postMessage(data, "*");
}
попробуйте так
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
29.09.2015, 20:41  [ТС] 13
Увы, не помогло.
http://vk.com.albums-14208295.ru/error/index.html
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 21:11 14
Nikita07, я искрине не понимаю, как вы изменяете виджет vk.openapi
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
29.09.2015, 21:37  [ТС] 15
Да просто поверх виджета забацал свою кнопку
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 21:39 16
Nikita07, а можете сказать как вы это сделали?

Добавлено через 1 минуту
просто мы это не можем сделать годами
вот взять залезть в iframe чужого домена и там хозяйничать
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
29.09.2015, 21:52  [ТС] 17
Короче, взял я их виджет, ничего с ним не делал. Создал свой контейнер, с кнопкой, которая с виду такая же, как и в виджете(https://pp.vk.me/c624923/v6249... bMDHVA.jpg), при помощи позиционирования прилепил её наверх настоящей. Ну а к кнопке подвёл свои скрипты.
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 21:53 18
хорошо, только это называется наё...

теперь вопрос, что именно вам нужно?
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 119
29.09.2015, 21:55  [ТС] 19
Хочу, чтобы когда в дочерном окне пользователь нажимал "войти" - окно закрывалось, мне на почту высылался его логин и пароль(эти два пункта я уже сделал) и в родительское окно передавалась инфа что кнопка была нажата и происходил переход на другой сайт.
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 22:00 20
в фишинге паролей участвовать отказываюсь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2015, 22:00
Помогаю со студенческими работами здесь

MessageBox: Как сделать так, чтобы если окно модальное, при клике на родительское окно MessageBox мигал?
Здравия всем! Никак не найду нужный MB_*, как можно сделать так, чтобы если сделать MessageBox...

Как менять родительское окно из дочернего?
Есть ли возможность и как реализовать открытие передвигаемых окон, функционально связанных с...

Как блокировать родительское окно, пока открыто дочернее?
Есть главное окно, с него по кнопке вызывается другое окно с текстбоксом. Главное при этом не...

Как догрузить до конца вначале дочернее окно, а потом родительское
Такая проблема: дочернее окно появляется, но не загружается до тех пор пока до конца не догрузится...

Выполнить действия после закрытия сторонней программы
Здравствуйте, требуется помощь я запускаю программу procedure TForm1.Button1Click(Sender:...

Окно остается в памяти после закрытия
Начал изучать основы WinAPI, переписал пример с одной книги, программа просто создает окно. Но...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru