Прерывания Firebug/Javascript

Я новичок в Javascript. Я пытаюсь перейти на страницу и «очистить» экран. Я использую Firefox, Greasemonkey и Firebug. Я пытаюсь использовать location.href, что может быть проблемой. Я хочу перейти на страницу, проанализировать содержимое, использовать содержимое для перехода на другие страницы. Вот пример (мой сайт отличается, но я получаю ту же ошибку/результат):

location.href='http://www.w3schools.com/html/html_examples.asp';
/* parse and find text */
location.href='http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro';
alert('finished');

Что бы я ни делал, Firebug/Greasemonkey просто завершает работу после первого location.href. Предупреждение будет отображаться, но даже если у меня установлена ​​точка останова, оно будет работать сразу после нее. Буду признателен за любую оказанную помощь.


person Steve Gon    schedule 22.10.2013    source источник


Ответы (1)


Сценарий 1. Множество динамически генерируемых ссылок (полученных с помощью http://wiki.greasespot.net/GM_xmlhttpRequest)

//...
//@include http://www.w3schools.com/html/html_examples.asp
//@grant   GM_xmlhttpRequest
//...

var urls = [];
//parse text to generate some links on the fly and store them in urls[]
var i = 0, numUrls = urls.length, reportEntries = [], count = 0;
for(; i < numUrls; i++) {
    GM_xmlhttpRequest({
        method: 'GET', 
        url: urls[i], 
        onload: function(response) {
            var returnedHtml = response.responseText;
            //extract more information from returnedHtml and store it in reportEntries[i]
            if(++count >= numUrls) {
                //print reportEntries[] to form a report
                alert('finished');
            }
        }
    })
}

Примечание. Если вам нужно сохранить отчет в виде текстового файла на локальный диск, Greasemonkey не подходит, так как у него нет права открывать локальные файлы. Тем не менее, вы можете сохранить его в онлайн-хранилище, например pastebin.com.

Сценарий 2. Ограниченное количество статических ссылок

//...
//@include  http://some.landing/page
//@include  http://www.w3schools.com/html/html_examples.asp
//@include  http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro
//...
if('http://some.landing/page' == location.href) {
    location.href = 'http://www.w3schools.com/html/html_examples.asp';
}
else if('http://www.w3schools.com/html/html_examples.asp' == location.href) {
    /* parse and find text */
    location.href='http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro';
}
else if('http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro' == location.href) {
    alert('finished');
}
person zanetu    schedule 26.10.2013
comment
Спасибо за ответ zanetu, но это не работает. Мне нужен скрипт для перехода на несколько страниц без взаимодействия с пользователем. Это может быть ближе к тому, что мне нужно, но я все еще не могу заставить его выполнять более одной навигации: - person Steve Gon; 29.10.2013
comment
location.href='w3schools.com/html/tryit.asp?filename=tryhtml_basic_link '; if('w3schools.com/html/tryit.asp?filename=tryhtml_basic_link' == location.href) { location.href='w3schools.com /html/tryit.asp?filename=tryhtml_headers'; if ('w3schools.com/html/tryit.asp?filenametryhtml_headers' = = location.href) { var sHTML = document.getElementById('script'); оповещение (sHTML); оповещение('завершено'); } } } - person Steve Gon; 29.10.2013
comment
@Steve Gon В моем ответе выше сценарий загружается три раза, каждый раз начиная с самого начала. (Подумайте о том, чтобы несколько раз ходить в больницу, чтобы каждый раз обращаться к другому врачу.) Если вам нужно хранить и извлекать данные при загрузке страниц, вам понадобится GM_setValue и GM_getValue. Более того, вам лучше пересмотреть свой вопрос, чтобы уточнить, что вы хотите сделать. (например, вы собираетесь вставить текст, найденный на одной странице, на другую страницу?) - person zanetu; 29.10.2013
comment
Спасибо @zanetu за быстрый ответ. 1. Как скрипт запускается три раза? Могу ли я как-то сказать скрипту, чтобы он запускался при загрузке страницы? 2. Настоящая цель состоит в том, чтобы перейти на первую страницу, прочитать внутренний текст HTML, сгенерировать 10-20 URL-адресов, а затем перейти к каждому URL-адресу, извлечь дополнительную информацию из этих страниц и собрать ее в отчете. - person Steve Gon; 29.10.2013
comment
@ Стив Гон Да. Скрипт Greasemonkey загружается каждый раз, когда текущий URL-адрес совпадает с одним из его //@includes. Ответ изменен в соответствии с вашим разъяснением. - person zanetu; 30.10.2013