Я не ищу полной реализации, меня больше интересует, как они это делают. Я знаю, что они используют GWT, но мне нужен более низкий ответ. Наивно, я бы начал с того, что подумал, что когда вы нажимаете всплывающую ссылку, они просто открывают новое окно и копируют в него контент. Есть много причин, по которым это не сработает, поэтому мне интересно, знает ли кто-нибудь или есть идеи о том, как они это делают или как это можно сделать.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Недавно мне нужно было решить именно эту проблему в приложении. В итоге я использовал этот замечательный маленький плагин jQuery, чтобы сделать трюк: WindowMsg (см. Ссылку внизу). Хотя я уверен, что есть и другие способы выполнить ту же задачу, этот плагин работает следующим образом:
По моему опыту работы с библиотекой, было бы неплохо, если бы они включили библиотеку JSON 2 с JSON.org. По умолчанию WindowMsg позволяет отправлять строковые сообщения между окнами, но с помощью довольно простого использования библиотеки JSON 2 я смог взломать ее, чтобы разрешить отправку полных объектов JSON между окнами. Я уверен, что более зрелые библиотеки (например, все, что использует Google) включают в себя такую сериализацию и десериализацию.
Я помещаю эту ссылку сюда, потому что по какой-то причине средство форматирования Stack Overflow превращает ее в якорную ссылку без закрывающего тега, и я не хочу, чтобы весь мой пост был одной гигантской гиперссылкой!
WindowMsg: http://www.sfpeter.com/2008/03/13/communication-between-browser-windows-with-jquery-my-new-plugin/
Я бы сказал, что самый простой способ - сохранить данные на сервере (что вы, вероятно, уже делаете), а затем просто заставить новое окно извлекать эти данные.
Конечно, это не сохранит такие вещи, как содержимое текстового поля, введенного пользователем, поэтому в зависимости от того, для чего предназначено окно, это может быть непрактично ... но всегда лучше начать пробовать самый простой вариант!
К сожалению, ссылка на WindowMsg не работает - у вас есть еще одна или вы можете добавить к своему ответу небольшой пример? (т.е. образец кода)