Chrome DevTools прослушивает несколько выборок одного и того же элемента на панели элементов - PullRequest
0 голосов
/ 14 мая 2019

В моем расширении Google Chrome DevTools я пытаюсь прослушать выборки на панели DevTools «Элементы». В частности, должна быть возможность прослушивания выбора уже выбранного элемента.

Мой текущий метод реализации вращается вокруг функции chrome.devtools.panels.elements.onSelectionChanged. Название функции уже предполагает, что можно реагировать только на элементы, которые в данный момент не выбраны. Поэтому я попытался сбросить или удалить текущий выбор с помощью переменной $0, чтобы иметь возможность снова прослушивать тот же элемент - к сожалению, безуспешно.

Моя цель - как-то прослушать каждый щелчок / выбор на панели элементов. Таким образом, я ищу onSelection слушателя вместо onSelectonChange слушателя.

РЕДАКТИРОВАТЬ # 1

Вот мой код, который я пробовал:

chrome.devtools.panels.elements.createSidebarPane(
    "Selector",
    function(sidebar) {
        // It fires if I'm selecting a specific DOM element via the elements panel the first time
        // It won't fire if I'm selecting the same DOM element again
        chrome.devtools.panels.elements.onSelectionChanged.addListener(() => {
            chrome.devtools.inspectedWindow.eval(`(${getSelector})()`,
            selector => {
                console.log(selector)
                // Here I tried to reset the current selection...
                // I've already debugged it: I can assign a value to $0, 
                // but this implies that the value remains constant even 
                // after a new selection.
                chrome.devtools.inspectedWindow.eval('$0 = undefined')
            })
        })
    }
)

Мне интересно, есть ли способ изменить селектор программно ...

1 Ответ

0 голосов
/ 16 мая 2019

Я действительно нашел решение.

Похоже, я пропустил функцию inspect(<domElement>) в документации Chrome DevTools.С помощью этой функции можно программно изменить вспомогательную переменную $0.Я вызываю inspect(document.body) в конце каждого вызова функции chrome.devtools.panels.elements.onSelectionChanged.addListener(), поэтому все остальные элементы DOM снова становятся доступными для выбора (несколько раз).

Примечание: в идеале вам следует вызывать inspect(<domElement>) для того элемента DOM, где вызнаю, что вы не хотите выбирать его несколько раз.

Я надеюсь, что смогу помочь кому-то с той же проблемой.

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