Ответ 1
То же происхождение?
Документы одного и того же происхождения всегда могут взаимодействовать друг с другом. Если код в одном окне или кадре может ссылаться на другое окно или фрейм, и они имеют один и тот же источник, тогда JavaScript в одном контексте выполнения (окно или фрейм..!) Может взаимодействовать с другим. Вы получаете такую ссылку на внешний объект Window
как возвращаемое значение при вызове window.open()
! Таким образом, используйте эту ссылку для установки любых переменных, которые вы хотите в этом окне, или загружаете новые скрипты, как вам удобно.
Передача текстовых сообщений
Если документы имеют не то же самое происхождение, либо у вас нет ссылки на другой контекст выполнения, то вы должны использовать новый API, введенный в HTML5. Он называется "postMessage API" и на удивление хорошо поддерживается. Даже IE 8 поддерживает его!
Вот простой способ проверить поддержку браузера этой функции:
if (typeof window.postMessage !== undefined)
console.log("postMessage API is supported!");
Вот пример того, как отправить миру приветственный текст получателю:
window.postMessage("Hello world", "www.dummy.com");
И вот как вы будете слушать такие сообщения в другом JavaScript, размещенном где-то еще:
window.addEventListener("message", function(event) {
if (event.origin === "www.dummy.com")
console.log("Received message: " + event.data);
}, true);
IE11 может иметь проблемы с этим и вообще не поддерживается в предыдущих версиях.
Динамически загружать JavaScript
Всякий раз, когда вам удавалось установить канал связи между ними, и пропустить простые данные не хватит, вы всегда можете передать полностью раздутый JavaScript другому пользователю и попросить его выполнить script. Пожалуйста, просмотрите этот вопрос stackoverflow и связанные с ним ответы, чтобы узнать больше о том, как реализовать такое решение на принимающей стороне.
Конечно, это всего лишь несколько коротких примеров, вы должны google остальное. Надеюсь, это помогло вам подобрать хотя бы путь.