谷歌浏览器:无法从Chrome扩展程序获取ElementById

时间:2019-10-27 00:37:18

标签: javascript google-chrome innertext

例如,我正在尝试读取https://developer.chrome.com/extensions/browserAction上具有id =“ tooltip”的元素的文本

以下代码可从控制台正常运行:

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 对象包含 _generation_background_page.html ,而不是我所讨论的页面。我需要的实际页面似乎包含在 tab 对象中。所以现在的问题是如何在标签中搜索“工具提示”?

我使用以下代码查看上述对象的内容: alert(JSON.stringify(tab, null, 4));
alert(JSON.stringify(document, null, 4));

2 个答案:

答案 0 :(得分:0)

也许是onclick而不是onclicked

curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -

答案 1 :(得分:0)

我似乎找到了解决方案。我不确定它是否是最优雅的,但仍然可以使用。

我创建了另一个名为 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');