Междоменное всплывающее окно с возвращаемым значением
-
22-07-2019 - |
Вопрос
Это установка:
У меня есть два сайта на двух разных доменах:
www.website1.com
www.someotherwebsite.com
Вот что я хочу сделать:
Когда пользователь включен
www.website1.com
и нажимаю на ссылку, я хочу, чтобы появилось всплывающее окно, показывающееwww.someotherwebsite.com
.Когда пользователь нажимает кнопку во всплывающем окне (показывающем
www.someotherwebsite.com
) Я хочу, чтобы это окно закрылось и вернулось значение.Я хочу, чтобы значение, возвращаемое из всплывающего окна, было помещено (в div, или в вызов javascript, или в какое-нибудь доступное место, например, при заполнении поля формы) на
www.website1.com
.
Надеюсь это имеет смысл.Мне нужно использовать только HTML и Javascript без внешних библиотек.Он также должен работать в современных основных браузерах (т.не быть чем-то HTML5).
Заранее спасибо за вашу помощь.
Решение
Хорошо, если вы используете iframe во всплывающем окне [в наши дни я бы избегал всплывающих окон, как чумы, из-за блокировщиков всплывающих окон]
С помощью iframe вы можете сделать междоменные вызовы
Почему бы вам просто не разработать веб-сервис от А до Б и не вызывать его из А?Кажется, гораздо проще, чем искать небольшие трещины в браузерах, чтобы обойти систему безопасности.
Другие советы
Вы можете опубликовать значение во всплывающем окне с www.someotherwebsite.com обратно на специальную страницу www.website1.com.Теперь вы вернулись в исходный домен, эта страница принимает значение GET и записывает его в код JavaScript.Затем JavaScript обновляет значение где-то в открывающем окне, используя opener.document.getElementById, или вызывает функцию в открывающем окне с чем-то вроде opener.document.doSomething(val);который обрабатывает ответ.
Это чревато потенциальными ошибками (что, если пользователь откроет две копии окна?Или закрывает исходный сайт?) и потенциальные дыры в безопасности, а браузеры имеют тенденцию плохо реагировать, если вы пытаетесь сделать что-то с окнами, которые не существуют или находятся в других доменах, но в известной среде это должно работать.