Как найти начальную и / или конечную временную метку, когда функция setinterval запускается или собирается завершиться - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь написать скрипт на Tampermonkey для веб-сайта, который я часто посещаю, чтобы регистрировать движения моих кораблей.
Существует таблица, сгенерированная с веб-сайта, на которой есть текущие движения, и код такой::

<table class="movements_table">
<tbody>
    <tr id="moveInfo815198" class="own">
        <td><span title="Arrival time">1D 8h 3m</span></td>
        <td class="ships">200</td>
        <td class="quantity">200,000</td>
        <td title="Origin" class="source">Town1</td>
        <td title="Target" class="target">Town2</td>
    </tr>
    <tr id="moveInfo815199" class="own">
        <td><span title="Arrival time">5D 3m 42s</span></td>
        <td class="ships">50</td>
        <td class="quantity">50,000</td>
        <td title="Origin" class="source">Town1</td>
        <td title="Target" class="target">Town2</td>
    </tr>
</tbody>
</table>

Из инструментов веб-разработчика я понял, что теги: таблица, tr и span обновляются каждую секунду.
Я предполагаю, что они обновляются с помощью функции setInterval и что эта функция должнаиметь метку времени окончания для каждого движения (строка таблицы).
Моя проблема в том, что я не знаю, где искать эти метки времени в коде, чтобы регистрировать точное время прибытия каждого из моих движений.

В результате я ожидаю получить массив javascript (т.е. движений), который содержит столько же элементов, сколько и движений (строк таблицы), где каждый элемент этого массива будет другим массивом.Каждый из этих массивов будет включать следующие элементы:

[id,timestamp,ships,quantity,origin,target]

При анализе приведенного выше кода результат будет следующим:

var movements = [
                 [815198,endtimeofsetInterval1,200,200000,Town1,Town2],
                 [815199,endtimeofsetInterval2,50,50000,Town1,Town2]
];

Элементы endtimeofsetInterval1 и endtimeofsetInterval2 должны быть в миллисекундах, и они должны быть записаны где-то внутри HTML-кода.
Простое решение - преобразовать время прибытия из Дней, Часов, Минут, Секунд в Миллисекунды и добавить теперь миллисекунды..
Проблема с этим решением состоит в том, что время прибытия дает каждый раз только три его части, как первое движение (1D 8 ч 3 м).
Так что, если я преобразую предыдущее в миллисекунды, это будет 86400000, но это можеттакже может быть 86459000 или что-то среднее между ними, потому что секунды времени прибытия не отображаются.
Это означает, что endtimeofsetInterval1 , который я хочу зарегистрировать, не будет правильным, и может бытьдо 59 секунд не хватает в расчете.
Вот почему я хочу найти реальное времяmps, которые используются для обновления тегов приведенной выше таблицы.

PS Меня интересует только совместимость моего скрипта с Google Chrome.

Есть ли способ узнать, где находятся эти элементы в HTML-коде?

1 Ответ

0 голосов
/ 10 мая 2018

Я не уверен, что это решит вашу проблему, но вы можете просто спросить JavaScript о вашем текущем времени, установить атрибут timestamp для вашего элемента и обновить его следующим образом:

function getTimestamp() {
  return new Date().getTime();
}

setInterval( ()=>{
  let element = document.getElementById('moveInfo815198').setAttribute("timestamp", getTimestamp())
}, 1000)

или

Если вы хотите обновить время прибытия, вам нужно знать точную дату и время прибытия, например, 20 мая 2018 13:45:25. Затем вы можете просто создать функцию, которая будет рассчитывать для вас количество часов, минут, секунд от текущего времени.

...