Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с ожиданием загрузки станицы у консольного скрипта. (https://javascript.ru/forum/misc/29440-problema-s-ozhidaniem-zagruzki-stanicy-u-konsolnogo-skripta.html)

Timon 28.06.2012 01:01

Проблема с ожиданием загрузки станицы у консольного скрипта.
 
В javascript я сущий новичок и столкнулся со следующей проблемой: я запланировал написать консольный скрипт, который автоматизирует мои действия, в процессе чего загружает различные странички. Однако, мне не удаётся заставить его ожидать их загрузки, что, понятно, необходимо. Сначала, я просто воспользовался циклом и пытался так или иначе приостановить работу скрипта после загрузки страниц:

function checkLoad()
{
     if (!window.onLoad)
     return setTimeout(checkLoad(), 1000);
}

do {
 
    document.location.replace('http://website.com');
    checkLoad()
    ...
}
while (arr.length > 0)


Мои попытки вызывали либо переполнение стека (как выше), либо пропуск скриптом загрузки страницы.

А потом я попытался реализовать это через событие OnLoad:

document.location.replace('http://website.com')    

onLoad = function (){
     alert ('here')
    switch (phase) {
...
    }
}


Также без особого успеха: функция не вызывается ни разу. Буду благодарен за совет.

ksa 28.06.2012 08:39

Цитата:

Сообщение от Timon (Сообщение 184711)
А потом я попытался реализовать это через событие OnLoad:

document.location.replace('http://website.com')    

onLoad = function (){
     alert ('here')
    switch (phase) {
...
    }
}


Также без особого успеха: функция не вызывается ни разу.

Бивас, тест!

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function test() {
	alert('Опа!');
};
</script>
</head>
<body onload='test()'>
</body>
</html>


Таки вызывается! :dance:

Dim@ 28.06.2012 09:11

Timon,
засуньте код в функцию и в конце допишите document.onload = имя_функции;
без скобок

devote 28.06.2012 09:19

Цитата:

Сообщение от Dim@
и в конце допишите document.onload

вообще то window.onload

melky 28.06.2012 12:20

Цитата:

Сообщение от Timon
return setTimeout(checkLoad(), 1000);

и вот здесь скобки выделенные убрать

Timon 28.06.2012 13:09

Цитата:

Сообщение от ksa
Таки вызывается!

Это-то конечно, но мне нужно, чтобы скрипт вызывался из консоли и работал с "внешними" по отношению к нему страницами.

Цитата:

Сообщение от Dim@
засуньте код в функцию и в конце допишите document.onload = имя_функции;
без скобок

В смысле

document.location.replace('http://website.com')    

function main(){
     alert ('here')
    switch (phase) {
...
    }
}

window.onload = main;


Увы, тоже самое. Страница загружается, а функция не вызывается ни разу. Возможно, при загрузке новой страницы консольный скрипт также прерывается?

Deff 28.06.2012 13:14

Timon,
Выложите полный скрипт - ведь возможна ошибка в промежуточных действиях - из за которых просто скрипт не работает или разбейте тегами
<script type="text/javascript">
Код
</script>
На минимально рабочие куски и выложите нерабочую часть

Timon 28.06.2012 18:05

Даже вот такой скрипт

alert ('start')
document.location.replace('http://google.com')

function main(){
     alert ('here')
}

window.onload = main;


запускаемый через консоль firefox или firebug не приводит к запуску функции main. Что интересно, при этом firebug закрывается при загрузке гугла, если не выбрана опция "включить на всех страницах". Самое обидное, что за исключением перехода на новую страницу (казалось бы, такая ерунда), всё остальное мой скрипт выполняет.

Deff 28.06.2012 18:20

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>

<script type="text/javascript">
alert ('start')
document.location.replace('http://google.com')

function main(){
     alert ('here')
}

window.onload = main;
</script>

</body>
</html>

devote 28.06.2012 18:22

Цитата:

Сообщение от Deff
window.onload = main ();

а смысл в скобках в конце??? ты же ее сразу вызываешь


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