Плагин для браузера с jQuery — захват обновлений DOM (в частности, Facebook)

#jquery #facebook #dom

#jquery #Facebook #dom

Вопрос:

В настоящее время я пишу плагин для браузера, который вставляет некоторые HTML-элементы на страницу. Мне интересно, как я могу заставить свой плагин определять, когда веб-сайт обновил DOM, а затем перейти и изменить HTML по мере необходимости.

В этом конкретном примере я пытаюсь вставить некоторый HTML-код на Facebook. Используя $ (document).функция ready () не работает, поскольку Facebook обновляет свою страницу с помощью AJAX. Похоже, это верно, когда пользователь переходит на страницу группы, а также когда пользователь прокручивает страницу вниз и загружает дополнительную информацию.

Я не могу просто прикрепить прослушиватель щелчков или прокрутки с помощью .live(), поскольку мне все равно нужно будет дождаться завершения обновления страницы, прежде чем я смогу изменить DOM.

У кого-нибудь есть идеи?

Ответ №1:

Вы можете загрузить комментарий с помощью JavaScript со следующим кодом:

 var abc = $("#fb-comments-wrapper");
var b = "<fb:comments href="page_url" num_posts="2" width="420"></fb:comments>"
abc.html(b);
  

После этого вызовите следующий код, который загрузит комментарий facebook в div названный ‘fb-comments-wrapper’ и вызовет функцию ‘facebookCommentLoaded’ при загрузке:

 FB.XFBML.parse(document.getElementById('container_of_fb-comments-wrapper'),facebookCommentLoaded);
  

Ваша «facebookCommentloadedfunction» может делать то, что вы хотите:

 function facebookCommentLoaded() {
    $(".uiBoxYellow").css("display","none");
    $(".commentas").css("display","none");
}
  

Однако я не смог внести какие-либо изменения в стиль в div facebook. Каким-то образом они были недоступны document.getElementByClass . Кажется, facebook изменяет dom таким образом, что предотвращает пользовательский CSS.