Chrome扩展程序:如何从活动标签页获取元素

时间:2017-03-13 19:49:03

标签: javascript google-chrome-extension

我正在尝试进行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个元素的数组 - 这不是很好,我不知道什么是错的...你有什么想法吗?

对每一个想法和问题的问候和感谢回答 石灰

1 个答案:

答案 0 :(得分:0)

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

  • 弹出页面中有一个按钮
  • 当您在按钮页面中单击此按钮时,您希望在活动页面中单击一个元素。

你从哪里调用这个函数:

clickJa()

从弹出页面?

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

如果你的目标只是点击弹出页面中的元素,那么最简单的事情就是:

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

(虽未测试)

有关脚本执行的更多信息: https://developer.chrome.com/extensions/tabs#method-executeScript