Узлы DOM пустые в сценарии расширения chrome - PullRequest
0 голосов
/ 28 февраля 2020

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

document.addEventListener("mousedown", function(event) {

    const selection = window.getSelection();
    console.log(selection);
    const currentNode = selection.anchorNode;
    console.log(currentNode);​
}

При первом клике currentNode всегда значение NULL. При последующих щелчках это выбранный узел, как и ожидалось.

В окне отладки записанная в журнал переменная selection показывает объект выбора со всеми элементами, равными NULL, но они оцениваются, если я раскрою объект со стрелкой вниз рядом с ним.

Это похоже, что-то асинхронно оценивается, что, как я понимаю, обычно обрабатывается с обещаниями в JavaScript. Ни один из звонков, которые я делаю, не возвращает обещание, от которого я могу ждать.

Я что-то упускаю здесь очевидное? Как я могу форсировать оценку участников отбора в первый раз?

1 Ответ

0 голосов
/ 28 февраля 2020

Думаю, проблема в том, что событие mousedown срабатывает слишком рано.

Попробуйте изменить его на событие click или mouseup вместо mousedown.

Кроме того, на событии click у вас есть доступ к event.target, который будет узлом, по которому щелкнули. window.getSelection(), вероятно, не то, что вы ищете здесь, если ваша цель - просто перемещаться, начиная с нажатого элемента.

...