2009-07-06 17 views

Antwort

268
var iframe = document.getElementById('iframeId'); 
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document; 

Sie mehr konnte einfach schreiben:

var iframe = document.getElementById('iframeId'); 
var innerDoc = iframe.contentDocument || iframe.contentWindow.document; 

und der erste gültige wird innere doc zurückgegeben werden.

Sobald Sie das innere Dokument erhalten haben, können Sie einfach auf seine Interna zugreifen, genauso wie Sie auf jedes Element Ihrer aktuellen Seite zugreifen würden.

WICHTIG (innerDoc.getElementById ... usw.): Vergewissern Sie sich, dass der iframe auf der gleichen Domäne ist, sonst können Sie keinen Zugriff auf seine Interna bekommen. Das wäre Cross-Site-Scripting.

+4

Große Antwort. Wussten Sie, dass Sie Folgendes tun können: var innerDoc = iframe.contentDocument || iframe.contentWindow.document; // lesbarer und bedeutet dasselbe –

+1

yeah, ich wusste davon. – geowa4

+5

Ich habe Leute mehr als ternäre Betreiber dadurch verwirrt gesehen. Sie scheinen nicht zu wissen, dass das erste gültige zurückgegeben wird. – geowa4

4
window.parent.document.getElementById("framekit").contentWindow.CallYourFunction('pass your value') 

CallYourFunction() ist Funktion innerhalb Seite und die Funktion Aktion darauf

+4

Das ruft eine Funktion von einem iFrame auf, ohne einen Verweis auf das Element zu erhalten. –

1

Keiner der anderen Antworten wurden für mich zu arbeiten. Ich beendete eine Funktion in meinem iframe Erstellen up, die das Objekt zurückgibt ich suchte:

function getElementWithinIframe() { 
    return document.getElementById('copy-sheet-form'); 
} 

Sie dann diese Funktion aufrufen, wie so das Element abzurufen:

var el = document.getElementById("iframeId").contentWindow.functionNameToCall(); 
3

Vergessen Sie nicht iframe zugreifen nachdem es geladen wurde. Alt aber zuverlässige Weise ohne 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> 
Verwandte Themen