谷歌浏览器:无法从chrome扩展名获取ElementById



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

以下代码在控制台上运行良好:

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

来自扩展的相同代码run显示"element contains null"。

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

这并不奇怪,因为文档对象包含_generated_background_page.html,而不是我的页面。我需要的实际页面似乎包含在选项卡对象中。所以现在的问题是如何在选项卡中搜索"工具提示">

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

也许是onclick而不是onclicked

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

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

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

最新更新