繁体   English   中英

Google Chrome:无法从 chrome 扩展中获取ElementById

[英]Google Chrome: can't getElementById from chrome extension

例如,我正在尝试在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 显示“元素包含 null”。

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

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

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

也许是 onclick 没有点击

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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM