Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Скрипт нагружает память хрома (https://javascript.ru/forum/css-html/69932-skript-nagruzhaet-pamyat-khroma.html)

jonsinat2 28.07.2017 20:09

Скрипт нагружает память хрома
 
Как боротся? Есть цыкл:
var i = 0;
function test() {
  if (i <= 5000) {
    test2();
    setTimeout(test, 1000);
  }
}

function test2() {
var obnov = document.getElementById("****").getElementsByTagName("**")[0].click();
var prov = document.getElementById("****");
if(prov.innerHTML != "") {i=5555; alert("ok");}else{obnov};
i++;

}
test();


С каждым цыклом пямять в хроме увеличивается, что нужно сделать? или что не так делаю?

jonsinat2 29.07.2017 04:59

Не знаю что делать уже, пробывал и так:
delete window.obnov;
delete window.prov;
delete window.i;

и просто
obnov=null;
prov=null;
i=null;

ничего не помогает, в диспетчере задач хрома видно как растет память Javascript(там есть такая вкладка)

j0hnik 29.07.2017 14:54

что делают эти функции?

jonsinat2 30.07.2017 08:54

первая функция это цыкл с интервалом в 1 сек и запуском второй функции, а во второй функции идет проверка на существования на странице елемента, если его нет значит продолжаем цыкл i++; и обновляем если он найден то останавливаем i=5555;

j0hnik 30.07.2017 16:23

var i = 0;
		setTimeout(function tim(){
			if (i <= 5000){
				if(document.getElementById("****")) {
					var obnov = document.getElementById("****").getElementsByTagName("****")[0].click();
					i=5555; alert("ok");
				}
				else setTimeout(tim, 1000);
			}
			i++;
		}, 1000);


только не совсем понятно:
зачем его искать в цикле?? должно быть какое-то событие появления
вызвать событие dispatchEvent(new Event("click"));

jonsinat2 31.07.2017 13:09

в общем на странице есть фрейм и его можно обновлять, мне нужно что бы обновлялся фрейм до тех пор пока там не появится что то. Но насколько я понял при каждом обновление страница остается в кеше и потом она перестает отвечать так как не хватает оперативной памяти, как это исправить?

Nexus 31.07.2017 15:44

jonsinat2, в конец адреса добавляй get-параметр с рандомным значением.

К примеру:
var img;//Это условная картинка
setInterval(function(){
img.src=img.src.split('?').shift()+'?'+Math.random();
},2000)

Изображений будет перезагружаться каждые 2 секунды игнорируя кеш.

jonsinat2 31.07.2017 19:14

ну это я понял а можео как то совсем чистить кеш через js?

Rise 31.07.2017 19:32

Цитата:

Сообщение от jonsinat2
мне нужно что бы обновлялся фрейм до тех пор пока там не появится что то

Если фрейм кросс-доменный появление не удастся определить и все ваши текущие вопросы бесполезны далее.


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