我正在尝试进行chrome扩展。我的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>
我在content_script.js中使用的代码:
function clickJa() {
console.log("clickJA");
var confirmButton = document.getElementsByClassName("confirmButtons");
console.log(confirmButton);
}
现在,我的问题: 当我在控制台中粘贴代码时,它会返回一个包含1个元素的数组 - 这很好。 当我在扩展名中按下我的按钮时,会返回一个包含0个元素的数组 - 这不是很好,我不知道什么是错的...你有什么想法吗?
对每一个想法和问题的问候和感谢回答 石灰
答案 0 :(得分:0)
正如评论中所述,我们需要更多细节。但是,让我们试着理解:
你从哪里调用这个函数:
clickJa()
从弹出页面?
如果它来自弹出页面,则该功能在弹出页面内执行,因此,您将不会拥有您的元素。 (因为它不在弹出页面中,而是在活动选项卡上)
如果你的目标只是点击弹出页面中的元素,那么最简单的事情就是:
chrome.tabs.executeScript( {
code: "document.getElementsByClassName(\"confirmButtons\").click();"
}, function() {
console.log("Element clicked !");
});
(虽未测试)
有关脚本执行的更多信息: https://developer.chrome.com/extensions/tabs#method-executeScript