Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.06.2012, 01:01
Новичок на форуме
Отправить личное сообщение для Timon Посмотреть профиль Найти все сообщения от Timon
 
Регистрация: 28.06.2012
Сообщений: 7

Проблема с ожиданием загрузки станицы у консольного скрипта.
В 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) {
...
    }
}


Также без особого успеха: функция не вызывается ни разу. Буду благодарен за совет.
Ответить с цитированием
  #2 (permalink)  
Старый 28.06.2012, 08:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Timon Посмотреть сообщение
А потом я попытался реализовать это через событие 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>


Таки вызывается!
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2012, 09:11
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

Timon,
засуньте код в функцию и в конце допишите document.onload = имя_функции;
без скобок
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2012, 09:19
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Dim@
и в конце допишите document.onload
вообще то window.onload
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2012, 12:20
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Timon
return setTimeout(checkLoad(), 1000);
и вот здесь скобки выделенные убрать
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2012, 13:09
Новичок на форуме
Отправить личное сообщение для Timon Посмотреть профиль Найти все сообщения от Timon
 
Регистрация: 28.06.2012
Сообщений: 7

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

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

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

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

window.onload = main;


Увы, тоже самое. Страница загружается, а функция не вызывается ни разу. Возможно, при загрузке новой страницы консольный скрипт также прерывается?
Ответить с цитированием
  #7 (permalink)  
Старый 28.06.2012, 13:14
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Timon,
Выложите полный скрипт - ведь возможна ошибка в промежуточных действиях - из за которых просто скрипт не работает или разбейте тегами
<script type="text/javascript">
Код
</script>
На минимально рабочие куски и выложите нерабочую часть
Ответить с цитированием
  #8 (permalink)  
Старый 28.06.2012, 18:05
Новичок на форуме
Отправить личное сообщение для Timon Посмотреть профиль Найти все сообщения от Timon
 
Регистрация: 28.06.2012
Сообщений: 7

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

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

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

window.onload = main;


запускаемый через консоль firefox или firebug не приводит к запуску функции main. Что интересно, при этом firebug закрывается при загрузке гугла, если не выбрана опция "включить на всех страницах". Самое обидное, что за исключением перехода на новую страницу (казалось бы, такая ерунда), всё остальное мой скрипт выполняет.
Ответить с цитированием
  #9 (permalink)  
Старый 28.06.2012, 18:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<!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>

Последний раз редактировалось Deff, 28.06.2012 в 18:24.
Ответить с цитированием
  #10 (permalink)  
Старый 28.06.2012, 18:22
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Deff
window.onload = main ();
а смысл в скобках в конце??? ты же ее сразу вызываешь
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срабатывание скрипта в разные моменты при загрузки в разных браузерах VitalikPro Javascript под браузер 10 29.12.2011 18:24
Выполнение скрипта до загрузки контента RogerUP Общие вопросы Javascript 3 11.11.2011 07:33
Проблема с выводом скрипта на страницу Mike_S. Общие вопросы Javascript 8 14.06.2011 07:26
Проблема загрузки в ИЕ Sergej AJAX и COMET 0 11.04.2011 09:29
Проблема с переносом скрипта на файерфокс. antidem Firefox/Mozilla 1 21.01.2011 10:31