#javascript #iframe
#javascript #iframe
Вопрос:
скажем, HTML-страница (Page.htm ) содержит следующее…
<script type="text/javascript">
var vara = 'varA';
</script>
Теперь эта страница загружается в iframe с другой страницы с помощью…
<iframe id="child_frame" src="http://mysite.com/Page.htm" />
С родительской страницы я хотел бы получить значение глобальной ‘vara’ из Page.htm .
Ни одна из следующих строк не работает…
window.frames['child_frame'].window.vara;
window.frames['child_frame'].window['vara'];
window.frames['child_frame'].contentWindow['vara'];
// in fact contentWindow returns undefined!!
Любая помощь была бы оценена!
Обновить
После более подробного рассмотрения этой проблемы и использования различных доступных библиотек для решения этой проблемы у меня было озарение, что, поскольку у меня есть контроль IIS как над основным, так и над встроенным веб-сайтами iframe, я могу работать в рамках правил междоменных сценариев, используя один и тот же базовый URL для различных веб-сайтов. Кроме того, библиотеки, которые решают проблему, похоже, нуждаются в постоянном обновлении, поскольку производители браузеров постоянно повышают свою безопасность с помощью обновлений. Было бы действительно непросто постоянно обновлять обходной путь для обхода того, что браузер пытается помешать вам сделать.
Ответ №1:
Ваш первый синтаксис должен работать, ЕСЛИ вы используете тот же doamin.
Если IFRAME
загружается страница из другого домена, то вы не сможете получить к ней доступ.
Комментарии:
1. ах, имеет смысл. Вы можете пойти наоборот? Может ли дочерний iframe видеть глобальные переменные своего родителя (разные домены)?
2. @John: это было бы еще хуже, тебе не кажется? В любом случае вас может заинтересовать это
3. @John Вы можете использовать parent.
parent.myGlobalVarInPageHtm.id
например.
Ответ №2:
Это:
<iframe id="child_frame" src="http://" />
Должно быть:
<iframe name="child_frame" src="http://" />
Атрибут iframe «id» следует изменить на «name».