A pergunta exata é como fazê-lo com JavaScript puro e não com jQuery.
Mas eu sempre uso a solução que pode ser encontrada no código-fonte do jQuery. É apenas uma linha de JavaScript nativo.
Para mim é o melhor fácil leitura e até mesmo, afaik o caminho mais curto para obter o conteúdo iframe.
Primeiro obtenha seu iframe
var iframe = document.getElementById('id_description_iframe');
// or
var iframe = document.querySelector('#id_description_iframe');
E então use a solução do jQuery
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
Ele funciona mesmo no Internet Explorer, que faz esse truque durante a contentWindow
propriedade do iframe
objeto. A maioria dos outros navegadores usa a contentDocument
propriedade e esse é o motivo pelo qual testamos essa propriedade primeiro nesta condição OR. Se não estiver definido, tente contentWindow.document
.
Selecionar elementos no iframe
Em seguida, você pode usar getElementById()
ou até mesmo querySelectorAll()
selecionar o elemento DOM entre iframeDocument
:
if (!iframeDocument) {
throw "iframe couldn't be found in DOM.";
}
var iframeContent = iframeDocument.getElementById('frameBody');
// or
var iframeContent = iframeDocument.querySelectorAll('#frameBody');
Chamar funções no iframe
Obtenha apenas o window
elemento de iframe
para chamar algumas funções globais, variáveis ou bibliotecas inteiras (por exemplo jQuery
):
var iframeWindow = iframe.contentWindow;
// you can even call jQuery or other frameworks
// if it is loaded inside the iframe
iframeContent = iframeWindow.jQuery('#frameBody');
// or
iframeContent = iframeWindow.$('#frameBody');
// or even use any other global variable
iframeWindow.myVar = window.myVar;
// or call a global function
var myVar = iframeWindow.myFunction(param1 /*, ... */);
Nota
Tudo isso é possível se você observar a política de mesma origem .