замена контента на страницах, которые используют ajax - PullRequest
0 голосов
/ 30 октября 2011

Я работаю над расширением для fb-игры, которое добавляет некоторую дополнительную информацию во всплывающие окна, скрывает некоторую бесполезную информацию и запускает некоторые таймеры, чтобы вы могли видеть, как долго вам придется что-то делать, даже если вы не находитесь настраница игры.Моя проблема в том, что некоторое время назад они перешли на использование ajax для переключения между страницами, и мне интересно, использую ли я правильный подход для решения этой проблемы.Я запускаю setInterval, который проверяет, нахожусь ли я на странице, где я хочу добавить / удалить soemting, и я еще не сделал этого, если это правда, я делаю свои вещи, код выглядит примерно так:

function myFunction() {
    if($(selector for some element I am looking for).length > 0 && $(selector for some item I add).length == 0) {
        //do some stuff
    }
}
setInterval("myFunction()",1000);

Является ли это правильным способом обработки изменения страницы ajax из сценария содержимого в расширении?Если да, то есть ли лучший способ проверить, нахожусь ли я на нужной странице или я уже добавил на эту страницу что-то кроме выбора?

1 Ответ

2 голосов
/ 30 октября 2011

Вы можете использовать livequery плагин jquery для перехвата при создании нового элемента на странице:

$("#ajax-element").livequery(function({
    //ajax-element is created
});

Вы также можете прослушать событие DOMSubtreeModified, которое срабатывает при изменении DOM:

document.addEventListener("DOMSubtreeModified", function(event){
    //something has changed, possibly ajax-element was added
});

Существуют также более конкретные DOMNodeInsertedIntoDocument и DOMNodeRemovedFromDocument события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...