javascript - dinamico - obtener contenido de un iframe jquery
Obtener elemento dentro de un iFrame (5)
Las respuestas anteriores dieron buenas soluciones usando js. Aquí hay una solución simple de jq:
$(''#iframeId'').contents().find(''div'')
El truco aquí es el .contents()
jq .contents()
, a diferencia de .children()
que solo puede obtener elementos HTML, .contents()
puede obtener tanto nodos de texto como elementos HTML. Es por eso que uno puede obtener el contenido del documento de un iframe usándolo.
Lectura adicional sobre jq .contents()
: .contents()
Tenga en cuenta que el iframe y la página deben estar en el mismo dominio.
¿Cómo se obtiene un <div>
dentro de un <iframe>
?
Ninguna de las otras respuestas funcionaba para mí. Terminé creando una función dentro de mi iframe que devuelve el objeto que estaba buscando:
function getElementWithinIframe() {
return document.getElementById(''copy-sheet-form'');
}
Luego llamas a esa función como para recuperar el elemento:
var el = document.getElementById("iframeId").contentWindow.functionNameToCall();
No olvide acceder a iframe después de que se cargue . Manera antigua pero confiable sin 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()
es función dentro de la página y esa acción de función en ella
var iframe = document.getElementById(''iframeId'');
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
Podrías simplemente escribir:
var iframe = document.getElementById(''iframeId'');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
y se devolverá el primer documento interno válido.
Una vez que obtenga el documento interno, puede acceder a sus elementos internos de la misma manera que accedería a cualquier elemento en su página actual. ( innerDoc.getElementById
... etc.)
IMPORTANTE: asegúrese de que el iframe esté en el mismo dominio; de lo contrario, no podrá acceder a sus partes internas. Eso sería scripting entre sitios.