Se genera dinamicamente il contenuto del iframe, tutti gli script/variabile caricato colerà da una scrittura ad un altro. Pertanto la soluzione fornita da @Eli per la cancellazione dell'elemento dom non funzionerà.
In breve:
Per pulire, avvolgere il vostro iframe in un elemento div e sostituire il suo contenuto dom.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<div id="wrapper">
<iframe id="test"></iframe>
</div>
</body>
</html>
Per pulire:
var wrapper = document.getElementById('wrapper');
wrapper.innerHTML= "<iframe id='test'></iframe>";
Nel dettaglio: Demo di perdite sceneggiatura
Esempio di perdite di script tra due iframe scrive (testato con Chrome):
var iframe = document.getElementById('test');
// define variable 'a'
var content = "<html><body><script>var a=555;</script></body></html>";
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(content);
iframe.contentWindow.document.close();
// uncomment this to clean the iframe
//document.getElementById('wrapper').innerHTML= "<iframe id='test'></iframe>";
// write 'a' if defined
var content2 = "<html><body><div id='content'></div><script>document.getElementById('content').innerHTML=typeof a === 'undefined' ? 'undefined' : a;</script></body></html>";
var iframe2 = document.getElementById('test');
iframe2.contentWindow.document.open();
iframe2.contentWindow.document.write(content2);
iframe2.contentWindow.document.close();
Se si esegue questo codice, verrà visualizzato l'output del file il secondo iframe è 555
sebbene sia stato definito nel primo iframe.
Se si disapprova la parte centrale, funzionerà come previsto.
questione connessa: Avoiding memory leaks loading content into an iframe
è sufficiente rimuovere e creare un nuovo iframe. –
'$ (" # frameID "). Attr (" src "," ")' funziona bene per me su Firefox 11. Se vuoi davvero un iframe vuoto, potresti anche provare a impostare 'src' su' about: blank' invece di una stringa vuota. –
@IlmariKaronen 'about: blank' fa miracoli !!! – TheVillageIdiot