Javascript: есть ли способ узнать, когда div был добавлен к элементу? - PullRequest
1 голос
/ 08 декабря 2009

Скажем, у меня есть сторонний твиттер-виджет на странице, который постоянно обновляется, когда появляется новый твит. Есть ли способ узнать , когда новый div был добавлен в этот виджет? Есть ли событие или что-то, что я могу подключить (возможно, к родительскому элементу виджетов)?

Если нет, как мне это сделать? Может быть, зацепить вызовы ajax, которые делает виджет? Как я могу это сделать? Это кажется возможным, поскольку firebug, кажется, делает это, но я не могу сказать, как.

Ответы [ 3 ]

1 голос
/ 08 декабря 2009

Сначала дайте самый простой ответ: я бы предложил проверить, существует ли div через секунду (время зависит от многих факторов - я уверен, что вы понимаете специфику времени для вашего сайта). При добавлении нового элемента (например, вашего виджета в твиттере) важно понимать, что каждый элемент (в вашем случае, «виджет») имеет определенные спецификации, которые могут иметь существенные различия по сравнению с аналогичными (на поверхности похожими) «виджетами».

Для краткого ответа: «Это зависит от стороннего виджета»

Для среднего ответа: «Если вы можете посмотреть, как создается виджет, вы, вероятно, сможете найти способ« поговорить с ним »»

Для более длинного ответа: «На самом деле не очень сложно создать что-то для общения с Twitter, поэтому, если вы хотите это узнать, я бы предложил более конкретную информацию».

Надеюсь, что-то из этого помогает ...

edit: ничего не зная о виджете, я бы, вероятно, установил интервал для отправки запросов от клиента к серверу, используя javascript: setInterval () или setTimeout () ... Если бы у меня было время / ресурсы, я бы предпочел решение, где вы понимаете как Twitter, так и виджет (экономит время в будущем, если вы хотите подумать о том, что вы сделали) ...

1 голос
/ 08 декабря 2009

Если вы используете какой-либо современный браузер, вы можете использовать DOM Mutation Events для прослушивания изменений узлов. Из описания вашего вопроса вы, вероятно, ищете DOMNodeInserted . Если вам нужно, вы можете использовать ужасный метод взлома setTimeout (), но в общем случае лучше ждать событий, чем вращаться вокруг в ожидании чего-либо.

Черт возьми, вот пример кода, потому что мне скучно:

var widget = document.getElementById('mywidget');
widget.addEventListener('DOMNodeInserted', function (e) {
  if (e.target.nodeName !== 'DIV') return;
  // do some other code here
}, false);
1 голос
/ 08 декабря 2009

Не знаю, если это хорошее решение, но вы можете периодически сравнивать содержание этого div.

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