Доступ к элементам iframe в JavaScript - PullRequest
26 голосов
/ 20 сентября 2009

У меня есть веб-страница, на которой есть текстовая область внутри iframe. Мне нужно прочитать значение этой текстовой области с дочерней страницы, используя JavaScript.

В настоящее время, используя window.parent.getelementbyID().value в JavaScript, я могу получить значения всех элементов управления на родительской странице, кроме текстовой области в iframe.

Может кто-нибудь дать мне какие-нибудь советы по решению этой проблемы?

Ответы [ 6 ]

51 голосов
/ 20 сентября 2009

Если ваш iframe находится в том же домене, что и родительская страница, вы можете получить доступ к элементам, используя document.frames collection.

// replace myIFrame with your iFrame id
// replace myIFrameElemId with your iFrame's element id
// you can work on document.frames['myIFrame'].document like you are working on
// normal document object in JS
window.frames['myIFrame'].document.getElementById('myIFrameElemId')

Если ваш iframe находится не в том же домене, браузер должен запретить такой доступ по соображениям безопасности.

15 голосов
/ 01 ноября 2011

Вы должны получить доступ к кадрам с window, а не с document

window.frames['myIFrame'].document.getElementById('myIFrameElemId')
14 голосов
/ 23 декабря 2013

window.frames['myIFrame'].document.getElementById('myIFrameElemId')

не работает для меня, но я нашел другое решение. Использование:

window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')

Я проверил это на Firefox и Chrome.

2 голосов
/ 14 марта 2017

Убедитесь, что ваш iframe уже загружен . Старый, но надежный способ без jQuery:

<iframe src="samedomain.com/page.htm" id="iframe" onload="access()"></iframe>

<script>
function access() {
   var iframe = document.getElementById("iframe");
   var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
   console.log(innerDoc.body);
}
</script>
2 голосов
/ 28 октября 2016

у меня этот код работал:

window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId');
1 голос
/ 11 апреля 2018

Два пути

window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')

OR

window.frames['myIFrame'].contentWindow.document.getElementById('myIFrameElemId')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...