web-dev-qa-db-fra.com

iframe contents change event?

Comment puis-je détecter lorsque le contenu iframe a changé et faire quelque chose après ce changement de pseudo-code ci-dessous

 $('#waframe').contents().change(function(){
   //do stuff
  });
26
mcgrailm

Eh bien, le navigateur semble générer un événement "load" sur un <iframe> élément dans le contexte de la page contenant. La "charge" se déclenche lorsque le "src" est modifié; Je ne sais pas s'il se déclenche lorsque l'iframe se modifie.

edit: oui, il semble se déclencher lorsque la page se recharge "en interne"

Ainsi, vous pourriez essayer:

$('iframe#yourId').load(function() {
  alert("the iframe has been loaded");
});
26
Pointy

Je fais un petit tour (saleté mais ça marche) :) 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>
4
Edson Martins

Vous pouvez l'utiliser pour déclencher un événement lors d'un 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 instruction mouseup si nécessaire

1
ravi404