Google Chrome: не удается получить ElementById из расширения Chrome - PullRequest
1 голос
/ 27 октября 2019

Например, я пытаюсь прочитать текст элемента с id = "tooltip" в https://developer.chrome.com/extensions/browserAction

Следующий код отлично работает из консоли:

var element = document.getElementById('tooltip');
if(element != null) {alert(element.innerText);}
else {alert("element contains null");}

То жекод r u n из расширения показывает «элемент содержит ноль».

chrome.browserAction.onClicked.addListener
(
  function(tab)
  {
    var element = document.getElementById('tooltip');
    if(element != null) {alert(element.innerText);}
    else {alert("element contains null");}
  }
);

И это неудивительно, поскольку объект document содержит _generated_background_page.html , а не моя страница под вопросом. И настоящая нужная мне страница, кажется, содержится в объекте tab . Таким образом, теперь вопрос Как искать «подсказку» во вкладке ?

Я использовал следующий код для просмотра содержимого вышеупомянутых объектов: alert(JSON.stringify(tab, null, 4));
alert(JSON.stringify(document, null, 4));

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Кажется, я нашел решение. Я не уверен, что это самый элегантный, но все же он работает.

Я создал второй скрипт с именем script2.js и ссылаюсь на него из script1.js .

Ниже приведено содержимое script1.js , которое выполняется, когда я нажимаю кнопку расширения на панели инструментов браузера:

chrome.browserAction.onClicked.addListener(function(tab){
  chrome.tabs.executeScript(null, {file: "script2.js"});
});

script1.js вызывает script2.js , который содержит основной код:

var element = document.getElementById('tooltip');
if(element != null) alert(element.innerText);
else alert('element is null');
0 голосов
/ 27 октября 2019

Возможно, он нажал, а не нажал

chrome.browserAction.onClick.addListener
(
  function(tab)
  {
    var element = document.getElementById('tooltip');
    alert(element.innerText);
  }
);
...