Ho uno script come questoHTML5 messaggistica multi-istanza
function resizeCrossDomainIframe(id, other_domain) {
var iframe = document.getElementById(id);
window.addEventListener('message', function (event) {
if (event.origin !== other_domain) return; // only accept messages from the specified domain
if (event.data === "reload") top.location.reload(); // If child page sends reload request - reload it without any questions asked
if (isNaN(event.data)) { //If this isn't integer than it is alert
alert(event.data); // Show alert if not integer
} else {
var height = parseInt(event.data) + 5; // add some extra height to avoid scrollbar
iframe.height = height + "px";
alert(event.data);
}
}, false);
}
ciò che fa è dinamicamente ridimensionata iframe. Ora su una prima pagina iframe ho appena ricevuto un avviso, ma nella pagina iframe ho dei collegamenti e quando vado alla seconda pagina vedo 2 avvisi, quando vado alla terza pagina - ricevo 3 avvisi, 4iiii grilletto 4 avvisi etc ...
In ogni pagina iframed sto chiamando genitore per ridimensionare come:
<body class="settingspage" onload="parent.postMessage(document.body.scrollHeight, '<?php echo $_SESSION['SESS_ACCESSING_FROM']; ?>');">
ho cercato di cancellare la matrice "evento", ma ho ancora ottenere avvisi, ma questa volta sono vuote, ma il numero di avvisi è uguale al numero di link-clic all'interno dell'iframe?
Perché è questo?
Quando/Dove si chiama 'resizeCrossDomainIframe()'? – FoolishSeth
@FoolishSeth La funzione stessa si trova su un altro dominio (ho accesso a entrambi i domini), ma dal momento che si tratta di messaggistica interdominio - lo sto chiamando su ogni corpo "iframe" al caricamento. Quindi, al primo "frame load" mostra tutto correttamente, ma mentre l'utente avanza facendo clic sui link all'interno dell'iframe, con ogni clic ricevo la stessa quantità di avvisi (1 clic del link in iframe = 1 avviso, 2 clic = 2 avvisi, 15 clic = 15 avvisi ecc.). – Peter