Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чистка памяти после закрытия/удаления iFrame (https://javascript.ru/forum/misc/74309-chistka-pamyati-posle-zakrytiya-udaleniya-iframe.html)

Tsyklop 30.06.2018 12:41

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

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

Как быть?

Нашел этот способ.
Сотворил такой код (не судите строго, делал на скорую руку):

let userIframe = $('<iframe>', {
    src: 'https://www.google.com',
    id:'userIframe',
    frameborder: 0,
    scrolling: 'yes'
});

userIframe.on('load', function() {

    userIframe[0].contentWindow.onbeforeunload = function() {
        console.log("IFRAME UNLOADING");
        console.log(this);
        $(this.document).off();
        $(userIframe.contents()).find('*').off();
        userIframe.remove();
        userIframe = null;
    };

});

$('body').append(userIframe);

setTimeout(function() {
      userIframe.attr('src', 'about:blank');
}, 10000);


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

ksa 02.07.2018 10:01

Цитата:

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

А если весь твой код засунуть в анонимную функцию?

(function(){
   // тут твой код
})();


Часовой пояс GMT +3, время: 09:31.