Скрипт Greasemonkey не работает должным образом на Reddit - PullRequest
0 голосов
/ 16 декабря 2011

Я создал следующий скрипт Greasemonkey, который будет выполняться в Firefox для всех веб-сайтов.Вот сценарий.Сценарий в основном получает все ссылки на странице и предупреждает количество ссылок.Это небольшая часть проекта, над которым я работаю.

window.addEventListener("load", function(e) {
            var links = window.document.getElementsByTagName("a");
            //window.setTimeout(function(){alert(links.length);},3000);
            alert(links.length);
        }, false);

Сценарий отлично выполнялся для некоторых веб-сайтов, но когда я получил доступ к reddit , он возвращает только 2 ссылкивместо всех ссылок, которые присутствуют на странице.Когда я пытался найти divs, присутствующий на странице, он также возвращал только 2.

Когда я исследовал источник страницы, было что-то, связанное с встроенным JavaScript.Но я не мог понять это прекрасно.Может кто-нибудь, пожалуйста, помогите мне, почему это не работает?

Спасибо, Сид

1 Ответ

1 голос
/ 16 декабря 2011

Это должно быть содержимое AJAX.Если вы выполняете свой код из отладчика, он работает нормально.Таким образом, единственное объяснение состоит в том, что контент отсутствует после события load.Попробуйте обернуть его в таймаут (некрасиво, но это должно доказать мою точку зрения).

setTimeout(testLinks, 3000);

function testLinks() {
    window.addEventListener("load", function(e) {
        var links = window.document.getElementsByTagName("a");
        //window.setTimeout(function(){alert(links.length);},3000);
        alert(links.length);
    }, false);

}

Теперь, когда вы знаете, в чем проблема, вы можете следовать инструкциям в этом вопросе SO, чтобы создать прослушиватель событий AJAX,Затем вы можете пересчитать количество ссылок при загрузке нового контента.

JavaScript обнаруживает событие AJAX

...