Ответы:
var iframe = document.getElementById('iframeId');
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
Вы могли бы проще написать:
var iframe = document.getElementById('iframeId');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
и первый действительный внутренний документ будет возвращен.
Получив внутренний документ, вы можете просто получить доступ к его внутренним элементам так же, как и к любому элементу на текущей странице. ( innerDoc.getElementById
... и т. д.)
ВАЖНО: убедитесь, что iframe находится в одном домене, иначе вы не сможете получить доступ к его внутренним объектам. Это будет межсайтовый скриптинг.
Не забудьте получить доступ к 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>
window.parent.document.getElementById("framekit").contentWindow.CallYourFunction('pass your value')
CallYourFunction()
это функция внутри страницы, и эта функция действует на нее
Приведенные выше ответы дали хорошие решения с использованием Javscript. Вот простое решение jQuery:
$('#iframeId').contents().find('div')
Суть в том, что .contents()
метод jQuery , в отличие от .children()
которого можно получить только элементы HTML, .contents()
может получать как текстовые узлы, так и элементы HTML. Вот почему с его помощью можно получить содержимое документа iframe.
Дальнейшее чтение о jQuery .contents()
: .contents ()
Обратите внимание, что iframe и страница должны быть в одном домене.
Ни один из других ответов не работал для меня. Я закончил тем, что создал в своем iframe функцию, которая возвращает искомый объект:
function getElementWithinIframe() {
return document.getElementById('copy-sheet-form');
}
Затем вы вызываете эту функцию примерно так, чтобы получить элемент:
var el = document.getElementById("iframeId").contentWindow.functionNameToCall();
Если iframe не находится в том же домене, что вы не можете получить доступ к его внутренним элементам от родителя, но вы можете изменить исходный код iframe, тогда вы можете изменить страницу, отображаемую в iframe, для отправки сообщений в родительское окно, что позволяет вам поделиться информацией между страницами. Некоторые источники:
Приведенный ниже код поможет вам узнать данные iframe.
let iframe = document.getElementById('frameId');
let innerDoc = iframe.contentDocument || iframe.contentWindow.document;