Чистка памяти после закрытия iFrame

271
12 августа 2018, 07:20

Как корректно закрыть/удалить iframe со страницы что бы память освободилась?

Заметил, что при открывании на основной странице других iframe-ов памяти потребляется все больше и больше, но при этом если просто удалить iframe, очистка памяти не произойдет.

Как быть?

Нашел этот способ.

Сотворил такой код (не судите строго, делал на скорую руку):

(function($) {
    $.fn.purgeFrame = function() {
        let frame = $(this);
        frame.each(function () {
            let _frame = this;
            $(_frame.contentWindow).off();
            let doc = $(_frame.contentWindow.document);
            doc.find('*').off().remove();
            doc.off();
            doc.empty();
            $(_frame).remove();
        });
    };
})($);

После выполнения iframe пропадает, но памяти очищается все пару мб, тогда как занимало около 20.

Добрые люди, подскажите.

Answer 1

Запускайте перезагрузку контента перед удалением iframe:

$('iframe')[0].contentWindow.onbeforeunload = function() { 
  console.log("unloading iframe"); 
  console.log(this); 
} 
$('#cleanIFrame').click(function() { 
  $('iframe')[0].contentWindow.location.reload(); 
  setTimeout(function() { 
    $('iframe').remove(); 
  }, 1000); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<button id='cleanIFrame'>Удалить</button> 
<br /> 
<iframe src="http://google.co.in" width="300" height="400" />

READ ALSO
Как изменить положения ползунка через jquery?

Как изменить положения ползунка через jquery?

Всем приветСверстал калькулятор - http://tokmaganbet

207
Отображения блоков JS

Отображения блоков JS

Есть разметка, хочу по клику по а,отображать блок, остальные скрыть

242
Как сделать прокси-запросы на сайт ч/з js

Как сделать прокси-запросы на сайт ч/з js

Есть сайт, посвященный тематике, например, автомобилей - siteru

232