Професионална програма
Loading...
+ Нов въпрос
velio84 avatar velio84 241 Точки

Скрипт за рефершване на страница през определен интервал и четене на информация от нея

Опитвам се да направя скрипт, който да запиша като bookmark и който при стартирането си да започне да рефрешва страницата през определен интервал (15 сек да речем).

Преди това в session storage-а му задавам стойност за нещо, като целта на заниманието е при все рефреш на страницата скрипта да сравнява стойността от session storage-a с нещо от самата страница.

За по-ясна представа - например ebay обява, задавам му цена, под която искам да купя нящо, скрипта почва да рефрешва сайта през 15 сек, взима div-a с цената, парсва, сравнява с това, което има в storage-a и ако е ок, цъка на бутона за бид.

Проблема е, че не мога да пипам нищо по самия сайт, на който искам да пускам скрипта, единствено мога като запиша скрипта като iife в bookmark на браузъра да го пусна.

Успях да го накарам да дърпа информацията от страницата, която искам и да я пълни в storage-a, но не мога да се оправя с това да се саморефрешва постоянно и да се изпълнява отново процедурата с четенето на елемента.

Четох из нета разни варианти и до момента съм го докарал дотук:

javascript:
var current = location.href,
	timer = setTimeout('reload()', 20000);
	
	//if I put the logic here it only executes once and then does not check for a change in the div element

function reload(){ 
	
	//if I put the logic here it does not have access to the DOM and can't check for the changes. 
		
	setTimeout('reload()',20000); 
	
	fr4me='<frameset cols=\'*\'>\n<frame src=\''+current+'\'/>'; 
	fr4me+='</frameset>'; 
	
	with(document){
		write(fr4me);
		void(close())
	}; 

това успява да се саморефрешва през 20 сек, проблема ми е както съм го описал в коментарите -

ако сложа логиката ми отгоре се изпълнява само веднъж при първото стартиране (логично, защото след това влиза в нещо като рекурсия в reload() функцията) и това не ми върши работа, тъй като не може да  хване промяната на елемента, който търся.

Ако сложа пък логиката във фукцията, почва да гърми с undefined, защото document.getElementById не вижда дом дървото.

Някакви идеи как да го оправя това? Мога ли по някакъв начин да подавам document на reload функцията при всяко завъртане?

Благодаря предварително, ако някой се отзове и помогне smiley

Тагове:
1
Advanced Level: Front-End 30/05/2015 00:29:27
kgerov avatar kgerov 49 Точки

За начина с bookmark-a не съм сигурен как можеш да го направиш, но аз правил нещо подобно с Bash script-ове. Правиш си един bash script, който с cURL взима въпросната страница, а от нея си взимаш информацията, която ти трябва (например цената). В самия скрипт ще имаш променлива, която ще държи цената, с която да сравнява, и ако сравнението е успешно, пускаш заявка с cURL да bid-не. Хубавото на bash script-a е, че лесно можеш да му кажеш и кога и колко често да се изпълнява. С Node.js също би станало (ако ти се прави с js).

1
30/05/2015 15:08:56
RoYaL avatar RoYaL Trainer 6845 Точки

Ако държиш да се случва през UI-а, а не през cURL - може да погледнеш някой туул за Web UI автоматизация, като Selenium WebDriver например http://www.seleniumhq.org/docs/03_webdriver.jsp

1