Est-ce que quelqu'un sait comment obtenir le code HTML d'un IFRAME? J'ai essayé plusieurs méthodes différentes:
document.getElementById('iframe01').contentDocument.body.innerHTML
document.frames['iframe01'].document.body.innerHTML
document.getElementById('iframe01').contentWindow.document.body.innerHTML
etc
Je pense que c'est ce que vous voulez:
window.frames['iframe01'].document.body.innerHTML
MODIFIER:
Je suis d’avis que cela ne fonctionnera pas dans Chrome et Firefox, bien que cela fonctionne parfaitement dans IE, c’est là que je l’ai testé. Rétrospectivement, c'était une grosse erreur
Cela fonctionnera:
window.frames[0].document.body.innerHTML
Je comprends que ce n’est pas exactement ce qui a été demandé, mais je ne veux pas supprimer la réponse car je pense qu’elle a sa place.
J'aime la réponse jquery de @ ravz ci-dessous.
Avoir quelque chose comme ce qui suit fonctionnerait.
<iframe id = "testframe" onload = populateIframe(this.id);></iframe>
// The following function should be inside a script tag
function populateIframe(id) {
var text = "This is a Test"
var iframe = document.getElementById(id);
var doc;
if(iframe.contentDocument) {
doc = iframe.contentDocument;
} else {
doc = iframe.contentWindow.document;
}
doc.body.innerHTML = text;
}
Si vous regardez JQuery , vous pouvez faire quelque chose comme:
<iframe id="my_iframe" ...></iframe>
$('#my_iframe').contents().find('html').html();
Cela suppose que vos parents et vos enfants d'iframe résident sur le même serveur, en raison de la Même politique d'origine en Javascript.
La réponse de Conroy était juste. Dans le cas où vous n’auriez besoin que de la balise body, utilisez simplement:
$('#my_iframe').contents().find('body').html();
N'oubliez pas que vous ne pouvez pas traverser des domaines pour des raisons de sécurité.
Donc si c'est le cas, vous devriez utiliser JSON .
Vous pouvez utiliser la propriété contentDocument ou contentWindow à cette fin. Voici l exemple de code.
function gethtml()
{
var x=document.getElementById("myframe");
var y=(x.contentWindow || x.contentDocument);
if (y.document)y=y.document;
alert(y.body.innerHTML);
}
ici, mon cadre est l'identifiant de votre iframe. Remarque: Vous ne pouvez pas extraire le contenu d'une iframe d'un src situé en dehors de votre domaine.
document.getElementById('iframe01').outerHTML
Vous pouvez obtenir le code source d'un autre domaine si vous installez le filtre ForceCORS sur Firefox. Lorsque vous activez ce filtre, il contournera la fonctionnalité de sécurité du navigateur et votre script fonctionnera même si vous essayez de lire une autre page Web. Par exemple, vous pouvez ouvrir FoxNews.com dans un iframe, puis en lire le code source. Les navigateurs Web modernes refusent cette possibilité par défaut, car si l'autre domaine contient un élément JavaScript, que vous lisez et affichez-le sur votre page, il pourrait contenir du code malveillant et constituer une menace pour la sécurité. Ainsi, chaque fois que vous affichez des données d'un autre domaine sur votre page, vous devez vous méfier de cette menace réelle et mettre en œuvre un moyen de filtrer tout le code JavaScript de votre texte avant de l'afficher. N'oubliez pas que lorsqu'un morceau de texte brut supposé contient du code contenu dans des balises de script, il ne s'affichera pas lorsque vous l'afficherez sur votre page, mais il s'exécutera! Alors, réalisez que c'est une menace.
Cette solution fonctionne comme iFrame. J'ai créé un script PHP pouvant extraire tout le contenu de l'autre site Web. Le plus important est que vous pouvez facilement appliquer votre jQuery personnalisé à ce contenu externe. Veuillez vous reporter au script suivant pour obtenir tous les contenus de l’autre site Web, puis vous pourrez également appliquer votre cusom jQuery/JS. Ce contenu peut être utilisé n'importe où, à l'intérieur de tout élément ou de toute page.
<div id='myframe'>
<?php
/*
Use below function to display final HTML inside this div
*/
//Display Frame
echo displayFrame();
?>
</div>
<?php
/*
Function to display frame from another domain
*/
function displayFrame()
{
$webUrl = 'http://[external-web-domain.com]/';
//Get HTML from the URL
$content = file_get_contents($webUrl);
//Add custom JS to returned HTML content
$customJS = "
<script>
/* Here I am writing a sample jQuery to hide the navigation menu
You can write your own jQuery for this content
*/
//Hide Navigation bar
jQuery(\".navbar\").hide();
</script>";
//Append Custom JS with HTML
$html = $content . $customJS;
//Return customized HTML
return $html;
}