Можно ли добавитьEventListener в таблицу, чтобы проверить наличие новой информации в этой таблице? - PullRequest
2 голосов
/ 09 июня 2011

У меня есть сценарий greasemonkey / user.js, написанный для какого-то сайта. на этом сайте есть таблица, которая время от времени выводит информацию; это делается путем добавления новой таблицы с информацией.

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

РЕДАКТИРОВАТЬ: таблица, на которой я хочу проверить, состоит только из строк таблицы. каждый раз, когда появляется новая информация, добавляется новая строка с текстом внутри. таблица, кажется, имеет максимальную длину. так что если это полная таблица, самый старый tr удаляется. Думайте об этом как о чате, он очень похож.

мой текущий синхронизированный цикл проверяет строки таблицы без тегов в этой таблице, извлекает из них информацию и маркирует их. поэтому он проверяет только непомеченные.

и пример одной из этих скатертей:

<tr class="tagged">
  <td align="left" style="vertical-align: top;">
    <div class="someClass" style="width: 100%;">
      some info i'm interested in
    </div>
  </td>
</tr>

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

@ wong2 Хороший звонок. Это работает для меня (вне пользовательского скрипта) в IE9, FF4, Chrome 6:

myTable = document.getElementsByTagName('table')[0];

if (document.implementation.hasFeature('MutationEvents','2.0')
    || window.MutationEvent) {

    myTable.addEventListener('DOMNodeInserted', function(e) {
        console.log('data added');
    }, false);
}
2 голосов
/ 09 июня 2011

Существует События мутации , возможно, вы можете использовать событие DOMNodeInserted , так как вставлены новые строки.

...