Javascript Chrome扩展:如何从活动选项卡页面获取元素

Javascript Chrome扩展:如何从活动选项卡页面获取元素,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在尝试做一个chrome扩展。my popup.html上有一个按钮,可单击活动选项卡中的某个元素。 理论上我想我知道怎么做,但现在我被困在这里: 网站上的HTML: <td class="confirmButtons"> <form action="modcp.php" method="post"> <input class="formAction" type="hidden" name="" value=""> <ul> <li c

我正在尝试做一个chrome扩展。my popup.html上有一个按钮,可单击活动选项卡中的某个元素。 理论上我想我知道怎么做,但现在我被困在这里:


网站上的HTML:

<td class="confirmButtons">
<form action="modcp.php" method="post">
<input class="formAction" type="hidden" name="" value="">
<ul>
<li class="button"><a href="javascript:void(0);" class="formAction" rel="confirm" tabindex="2"><strong>Ja</strong></a></li>
</ul>

<ul class="buttonGroup">
<li class="first"></li>
<li class="button"><a href="javascript:void(0);" class="formAction" rel="cancel" tabindex="2"><strong>Nein</strong></a></li><a href="javascript:void(0);" class="formAction" rel="cancel" tabindex="2">
<li class="last"></li>
</a></ul></form></td>

现在,我的问题是: 当我在控制台中粘贴代码时,它会返回一个包含1个元素的数组——这很好。 当我按下扩展中的按钮时,ut返回一个包含0个元素的数组-这不好,我也不知道出了什么问题。。。你有什么想法吗

问候并感谢您的每一个想法和答案
石灰

正如评论中所说,我们需要更多的细节。但是,让我们试着理解:

  • 在弹出页面中有一个按钮
  • 当您在按钮页面中单击此按钮时,您希望在活动页面中单击一个元素
从何处调用函数:

clickJa()
从弹出页面

如果它来自弹出页面,那么该函数将在弹出页面内执行,因此,您将不会拥有您的元素。(因为它不在弹出页面中,而是在活动选项卡上)

如果您的目标只是单击弹出页面中的一个元素,那么最简单的方法可能是:

chrome.tabs.executeScript( {
    code: "document.getElementsByClassName(\"confirmButtons\").click();"
}, function() {
      console.log("Element clicked !");
});
(但未经测试)

有关脚本执行的详细信息:

这意味着在运行内容脚本时,站点还没有按钮。根据目标和注入方式,有几种解决方案,如计时器、MutationObserver、事件。请回答主题中的问题:包括复制问题的解决方案。对于Chrome扩展或Firefox WebExtensions,这几乎总是意味着包括manifest.json和一些背景、内容和/或弹出脚本/HTML。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)所需的行为,(2)特定的问题或错误,(3)在问题本身中重现它所需的最短代码。请同时参阅:,和。wOxxOm所说的是最可能的问题。但是,如果没有足够的代码来复制问题(以及网站的URL,以便我们知道在哪里进行测试),我们无法确定。
chrome.tabs.executeScript( {
    code: "document.getElementsByClassName(\"confirmButtons\").click();"
}, function() {
      console.log("Element clicked !");
});