Yanıtlar:
var iframe = document.getElementById('iframeId');
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
Daha kolay yazabilirsiniz:
var iframe = document.getElementById('iframeId');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
ve ilk geçerli içsel doküman iade edilecektir.
Dahili dokümanı aldıktan sonra, dahili sayfasına mevcut sayfanızdaki herhangi bir öğeye eriştiğiniz şekilde erişebilirsiniz. ( innerDoc.getElementById
... vb.)
ÖNEMLİ: iframe'in aynı alan adında olduğundan emin olun, aksi takdirde dahili cihazlarına erişemezsiniz. Bu siteler arası komut dosyası oluşturmak olacaktır.
Yüklendikten sonra iframe'e erişmeyi unutmayın . JQuery olmadan eski ama güvenilir bir şekilde:
<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()
sayfa içindeki işlev ve bu işlev eylemi
Yukarıdaki yanıtlar Javscript kullanarak iyi çözümler verdi. İşte basit bir jQuery çözümü:
$('#iframeId').contents().find('div')
Buradaki hile, jQuery'nin .contents()
yöntemidir, aksine .children()
sadece HTML öğelerini .contents()
alabilir, hem metin düğümlerini hem de HTML öğelerini alabilir. Bu nedenle bir iframe'in doküman içeriğini kullanarak alabilirsiniz.
JQuery .contents()
: .contents () hakkında daha fazla bilgi
Not iframe ve sayfa aynı alan üzerinde olması gerektiğini.
Diğer cevapların hiçbiri benim için işe yaramıyordu. İç çerçevemde aradığım nesneyi döndüren bir işlev oluşturdum:
function getElementWithinIframe() {
return document.getElementById('copy-sheet-form');
}
Daha sonra elemanı almak için bu işlevi şöyle çağırırsınız:
var el = document.getElementById("iframeId").contentWindow.functionNameToCall();
İframe aynı etki alanında değilse, üst öğesinden iç öğelerine erişemeyeceğiniz halde iframe'in kaynak kodunu değiştirebiliyorsanız, üst pencereye ileti göndermek için iframe tarafından görüntülenen sayfayı değiştirebilirsiniz sayfalar arasında bilgi paylaşmanızı sağlar. Bazı kaynaklar:
Aşağıdaki kod iframe verilerini bulmanıza yardımcı olacaktır.
let iframe = document.getElementById('frameId');
let innerDoc = iframe.contentDocument || iframe.contentWindow.document;