Доступ к элементам iframe в JavaScript
У меня есть веб-страница, где есть текстовое поле внутри iframe. Мне нужно прочитать значение этого текстового поля со своей дочерней страницы с помощью JavaScript.
В настоящее время с помощью window.parent.getelementbyID().value
в JavaScript я могу получить значения всех элементов управления на родительской странице, кроме текстовой области внутри iframe.
Может кто-нибудь, пожалуйста, дать мне какие-либо указания, чтобы решить эту проблему?
Ответы
Ответ 1
Если ваш iframe находится в том же домене, что и ваша родительская страница, вы можете получить доступ к элементам с помощью коллекции document.frames
.
// replace myIFrame with your iFrame id
// replace myIFrameElemId with your iFrame 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 не находится в том же домене, браузер должен предотвратить такой доступ по соображениям безопасности.
Ответ 2
Вам нужно получить доступ к кадрам из window
, а не document
window.frames['myIFrame'].document.getElementById('myIFrameElemId')
Ответ 3
window.frames['myIFrame'].document.getElementById('myIFrameElemId')
не работает для меня, но я нашел другое решение. Использование:
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')
Я проверил его на Firefox и Chrome.
Ответ 4
этот код работал у меня:
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId');
Ответ 5
Убедитесь, что ваш 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>