¿Cómo se puede detectar que cuando el contenido de iframe ha cambiado y hacer algo sobre ese código de cambio seudo continuacióniframe contents change event?
$('#waframe').contents().change(function(){
//do stuff
});
¿Cómo se puede detectar que cuando el contenido de iframe ha cambiado y hacer algo sobre ese código de cambio seudo continuacióniframe contents change event?
$('#waframe').contents().change(function(){
//do stuff
});
Bueno, parece que el navegador generará un evento de "carga" en un elemento en el contexto de la contenga página. La "carga" se dispara cuando se cambia "src"; no estoy seguro de si se dispara cuando el iframe se cambia a sí mismo.
edición: sí, sí parece disparar cuando la página se recarga "internamente"
Por lo tanto es posible que trate:
$('iframe#yourId').load(function() {
alert("the iframe has been loaded");
});
estoy haciendo un truco Litle (suciedad, pero funciona) :) para visualizar un objeto que se carga
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>
No es muy viable porque tiene que hacer comparaciones de cadenas por cada 10 milisegundos, lo que puede ser fácilmente una carga cuando el tamaño del documento aumenta a los MB. –
Evitar el uso de cadenas en 'setTimeout' es a) un riesgo de seguridad, b) lento, c) imposible para el intérprete JS manejar con cordura. – Sukima
puede utilizar este evento para disparar sobre el cambio .. Funciona en IE8 y 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);
}
Se puede usar un comunicado mouseup
si es necesario
esto no funcionará para fuentes de dominio cruzado – David
no parece que esta al fuego en Safari u Opera No he comprobado es decir, cromo o aún – mcgrailm
Hmm. Bueno, la documentación de Microsoft no es clara en el tema. Para probarlo, todo lo que hice fue tener una pequeña página con un iframe, y apunté el iframe a un dominio aleatorio mío. En la página de prueba, configuré un oyente de eventos jQuery para "cargar" en el elemento iframe. – Pointy
funciona en ff y eso es genial, pero voy a necesitar algo que funcione en todo el tablero o al menos la mayor parte del camino – mcgrailm