Comment puis-je détecter le contenu iframe a changé et faire quelque chose sur ce code changement pseudo ci-dessousLe contenu iframe a-t-il changé d'événement?
$('#waframe').contents().change(function(){
//do stuff
});
Comment puis-je détecter le contenu iframe a changé et faire quelque chose sur ce code changement pseudo ci-dessousLe contenu iframe a-t-il changé d'événement?
$('#waframe').contents().change(function(){
//do stuff
});
Eh bien, le navigateur semble générer un événement de « charge » sur un élément dans le contexte du contenant page. La "charge" se déclenche lorsque le "src" est changé; ne sait pas s'il se déclenche lorsque l'iframe se modifie.
modifier: oui, il ne semble tirer lorsque la page rechargements "interne"
Ainsi, vous pouvez essayer:
$('iframe#yourId').load(function() {
alert("the iframe has been loaded");
});
Am faire un tour Litle (saleté, mais il fonctionne) :) pour afficher un objet de chargement
function changeDet(old){ //detect src changes
if($("iframe#ifID").attr('src') != old){
$("iframe#ifID").width(0); //error if i hide ...?
}
setTimeout('changeDet("' + $("#db").attr('src') + '")',10);
}
var df = $('#iframe#ifID');
df.load(function(){ //content loaded
setTimeout('$("#db").width(var_default_width);',100);
});
changeDet();
$(function(){
//jq stuffs...
})
</script>
Pas très viable car vous devez faire des comparaisons de chaînes toutes les 10 millisecondes, ce qui peut être facilement un fardeau lorsque la taille du document augmente en Mo. –
Évitez d'utiliser une chaîne dans 'setTimeout' c'est a) un risque de sécurité, b) lent, c) impossible à gérer par l'interpréteur JS. – Sukima
Vous pouvez l'utiliser pour appliquer l'événement sur le changement .. Fonctionne sur IE8 et Firefox
if(document.addEventListener){
yourIFrameObject.contentWindow.document.addEventListener('keyup', yourFunction, false);
// window.frames[0].document.addEventListener('keyup', yourFunction, false);
}
else{
//for IE8
yourIFrameObject.contentWindow.document.attachEvent('onkeyup', yourFunction);
}
Vous pouvez utiliser une déclaration mouseup
si nécessaire
cela ne fonctionnera pas pour les sources inter-domaines – David
cela ne semble pas le feu en safari ou l'opéra, je n'ai pas vérifié ou chrome-à-dire encore – mcgrailm
Hmm. Eh bien, la documentation de Microsoft n'est pas claire sur le sujet. Pour le tester, tout ce que j'ai fait était d'avoir une petite page avec un iframe, et j'ai pointé l'iframe vers un domaine aléatoire. Dans la page de test, je viens de configurer un écouteur d'événement jQuery pour "charger" sur l'élément iframe. – Pointy
ça marche dans ff et c'est cool mais je vais avoir besoin de quelque chose qui fonctionne tout autour du tableau ou au moins la plupart du temps – mcgrailm