Javascript Chrome扩展:如何从活动选项卡页面获取元素
我正在尝试做一个chrome扩展。my popup.html上有一个按钮,可单击活动选项卡中的某个元素。 理论上我想我知道怎么做,但现在我被困在这里: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
网站上的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 !");
});