2014-12-29 3 views
1

Вы знаете, как при прокрутке до нижней части страницы профиля (я говорю о личной странице пользователя, а не о временной шкале) новые твиты загружаются автоматически. Я пишу UserScript, в котором я хочу выполнять функцию каждый раз, когда загружаются эти новые твиты.Обнаруживать, когда загружаются новые твиты с помощью jQuery?

Но я не могу определить способ обнаружения этого нового события, загруженного твитами. Я предполагаю его запрос AJAX, не так ли? Поэтому я попробовал следующие две функции, но безрезультатно.

$(document).ajaxComplete(function() { 
    alert("Complete! New tweets loaded!"); 
}); 

$(document).ajaxSuccess(function() { 
    alert("Success! New tweets loaded!"); 
}); 

Вот что у меня есть. Это работает, когда сначала загружается страница. Но это не влияет на твиты, загруженные после прокрутки вниз.

// ==UserScript== 

// @name   CoolScript 
// @include   https://twitter.com/IJNanayakkara 
// @include   https://twitter.com/IJNanayakkara/status/* 
// @require   http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js 
// @require   https://gist.github.com/raw/2625891/waitForKeyElements.js 
// @version   1.0 
// @license   GPL v3 or any later version (http://www.gnu.org/copyleft/gpl.html) 
// @grant   GM_addStyle 

// ==/UserScript== 

$.each($('p.js-tweet-text'), function() { 
    $(this).prepend("Brought to you by "); 
}); 

Как определить загрузку новых твитов из jQuery?


Edit: я заметил еще один вопрос. Сценарий не запускается при переходе на страницу. Мне действительно нужно обновить страницу. Я искал и нашел this answer. Я импортировал этот .js-файл в скрипт, но я не знаю, какой элемент мне действительно нужно ждать.

Как я могу запустить скрипт без ручного обновления?

ответ

3

Если ваш следующий код:

$.each($('p.js-tweet-text'), function() { 
    $(this).prepend("Brought to you by "); 
}); 

работает на статических разрядов страницы, или из командной консоли, то он переводится в этот waitForKeyElements код:

waitForKeyElements ("p.js-tweet-text", prependToTweet); 

function prependToTweet (jNode) { 
    jNode.prepend("Brought to you by "); 
} 

Простой: Селектор остается прежним, а порты кода .each() напрямую, за исключением того, что $(this) заменяется на jNode.


waitForKeyElements обрабатывает AJAXed элементы автоматически (работает на прокрутки вниз и без необходимости обновления).

+0

Спасибо, Брок. Это работает, но есть новая проблема. Если я перейду к новой странице из своего профиля, скажите на временной шкале, все твиты там также затронуты сценарием, хотя я использовал его только для двух страниц, используя '@ include'. Любая идея, почему это происходит? – Isuru

+0

Нет, и я не использую твиттер. Задайте новый вопрос с *** точной *** рецептурой для дублирования новой проблемы. –

+0

О, ладно. Я открыл новый [вопрос] (http://stackoverflow.com/q/27705455/1077789). Надеюсь, я найду что-то, что проливает свет на это. Спасибо, в любом случае :) – Isuru