Если родительская страница A и страница iframe B находятся в разных доменах, вы не сможете получить доступ к методам или полям через родительское свойство B, а сценарий на A не сможет получить доступ к содержимому B, а также не будет возможность обмена глобальными переменными между A и B. Эта граница, размещенная между страницей A и страницей B, является ключевой частью модели безопасности браузера. Это то, что мешает evil.com обернуть веб-страницу вашего онлайн-банка и украсть информацию о вашем счете, просто прочитав внутренние переменные javascript веб-страницы банка.
Если вам нужна роскошь браузеров последнего поколения, вы можете использовать технику пост-сообщения, упомянутую в одном из других ответов здесь. Если вам требуется поддержка старых браузеров, вы можете передавать небольшие объемы информации, используя методы междоменного клиентского скриптинга в браузере. Одним из примеров этого является использование iframes для передачи информации между внешней страницей A и внутренней страницей B. Это непросто и требует много шагов, но это можно сделать. Я написал статью об этом некоторое время назад.
Вы не сможете отслеживать клики в iframe B с родительской страницы A. Это нарушение политик безопасности браузера на нескольких уровнях. (Нажмите, например, для перехвата). Вы не сможете увидеть, когда URL-адрес B изменится - A может написать в свойство iframe.src, чтобы изменить URL-адрес, но как только iframe.src указывает на домен, отличный от домена A, A больше не может читать свойство iframe.src.
Если A и B находятся в разных поддоменах одного корневого домена, у вас может быть возможность «понизить» домен до общего корня. Например, если внешняя страница A размещена в поддомене A.foo.bar.com, а B размещена в поддомене foo.bar.com, вы можете понизить домен на странице A до foo.bar.com (назначив window.domain = "foo.bar.com" в сценарии А). Страница A будет тогда вести себя как одноранговая страница B, и тогда они смогут получать доступ к данным друг друга по мере необходимости, даже если A технически обслуживается из другого домена, чем B. Я написал статью о понижение домена тоже.
Снижение домена может привести к отслоению только самых внутренних поддоменов для работы в контексте корневого домена. Вы не можете изменить A.foo.bar.com на abc.com.
Существует также небольшой риск при понижении доменов до общего корневого домена. Когда вы управляете своей страницей в своем собственном поддомене, ваш html и скрипт отделяются от других поддоменов вне общего корневого домена. Если сервер в одном из других поддоменов скомпрометирован, это не повлияет на вашу HTML-страницу.
Если вы понижаете домен своей страницы до общего корневого домена, вы предоставляете внутренним компонентам сценарий, выполняющийся в общем корневом домене, и сценарии из других поддоменов, которые также понижают свой домен до общего корневого домена. Если сервер в одном из других поддоменов будет взломан, он получит доступ к внутренним компонентам вашего скрипта и, следовательно, может также скомпрометировать ваш поддомен.