Comment puis-je accéder au contenu d'un iframe avec jQuery? J'ai essayé de faire ça, mais ça ne marcherait pas:
Contenu iframe: <div id="myContent"></div>
jQuery: $("#myiframe").find("#myContent")
Comment puis-je accéder à myContent
?
Similaire à jquery/javascript: accès au contenu d'un iframe mais la réponse acceptée n'est pas ce que je cherchais.
Vous devez utiliser la méthode contents()
:
$("#myiframe").contents().find("#myContent")
Source: http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/
API Doc: https://api.jquery.com/contents/
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript">
$(function() {
//here you have the control over the body of the iframe document
var iBody = $("#iView").contents().find("body");
//here you have the control over any element (#myContent)
var myContent = iBody.find("#myContent");
});
</script>
</head>
<body>
<iframe src="mifile.html" id="iView" style="width:200px;height:70px;border:dotted 1px red" frameborder="0"></iframe>
</body>
</html>
Si la source d'iframe est un domaine externe, les navigateurs masqueront le contenu de l'iframe (politique d'origine identique). Une solution de contournement consiste à enregistrer le contenu externe dans un fichier, par exemple (en PHP):
<?php
$contents = file_get_contents($external_url);
$res = file_put_contents($filename, $contents);
?>
ensuite, récupérez le nouveau contenu du fichier (chaîne) et analysez-le en HTML, par exemple (en jquery):
$.get(file_url, function(string){
var html = $.parseHTML(string);
var contents = $(html).contents();
},'html');