Come posso rilevare quando il contenuto iframe è cambiato e fare qualcosa su quel codice di cambiamento pseudo sottoI contenuti iframe cambiano evento?
$('#waframe').contents().change(function(){
//do stuff
});
Come posso rilevare quando il contenuto iframe è cambiato e fare qualcosa su quel codice di cambiamento pseudo sottoI contenuti iframe cambiano evento?
$('#waframe').contents().change(function(){
//do stuff
});
Ebbene, il browser sembra generare un evento di "carico" su un elemento nel contesto del contenente pagina. Il "carico" si attiva quando viene cambiato "src"; non sono sicuro se si attiva quando l'iframe cambia se stesso.
edit: sì Sembra di sparare quando la pagina viene ricaricata "internamente"
Così si potrebbe provare:
$('iframe#yourId').load(function() {
alert("the iframe has been loaded");
});
Am facendo un trucco litle (sporco ma funziona) :) per visualizzare un oggetto carico
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>
Non molto fattibile perché devi fare confronti tra stringhe ogni 10 millisecondi, che possono essere facilmente un onere quando la dimensione del doc aumenta a MB. –
Evitare l'uso di stringhe in 'setTimeout' è a) un rischio per la sicurezza, b) lento, c) impossibile per l'interprete JS gestirlo con qualsiasi ragionevolezza. – Sukima
È possibile utilizzare questo evento per sparare sul cambiamento .. Funziona su IE8 e 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);
}
Si potrebbe utilizzare una dichiarazione mouseup
se necessario
non funzionerà per le fonti cross-domain – David
questo non sembra al fuoco in Safari o Opera non ho controllato cioè cromo o ancora – mcgrailm
Hmm. Bene, la documentazione di Microsoft non è chiara sull'argomento. Per provarlo, tutto ciò che ho fatto era avere una piccola pagina con un iframe, e ho indicato l'iframe in un mio dominio casuale. Nella pagina di test, ho appena impostato un listener di eventi jQuery per "caricare" sull'elemento iframe. – Pointy
funziona in ff e questo è bello ma ho bisogno di qualcosa che funzioni a 360 gradi o almeno la maggior parte del modo – mcgrailm