在另一个网站上使用Javascript for Chrome Extension检查所有框时出现问题

Problems checking all boxes on another website using Javascript for Chrome Extension

本文关键字:检查 问题 Extension Chrome 网站 另一个 for Javascript      更新时间:2023-09-26

我是Javascript的新手,请耐心等待:(

我试图创建一个谷歌Chrome扩展,它会选中特定网站上的所有框,并选择他们有的删除选项

我在网上找到了一个链接,有人在这个链接上制作了一个类似于我想要的脚本:

JavaScript选中所有复选框

我正在为我的扩展创建javascript文件,我创建了一些代码只是为了勾选所有框。不过它似乎不起作用。你能给我一些建议吗?这是我到目前为止写的代码,扩展名在.js源文件中只有这段代码,我只是要求它现在检查的所有框

我使用的布局与Chrome扩展教程相同,稍后会更改

抱歉你看起来像个傻瓜,伙计们,请帮帮我。谢谢

function check_all_in_document(doc){
  var c=new Array();
  c=doc.getElementsByTagName('input');
  for(var i=0;i<c.length;i++){
    if(c[i].type=='checkbox'){
      c[i].checked=true;
    }
  }
}
document.addEventListener("DOMContentLoaded", function()
  {
    check_all_in_document(window.document);
    for(var j=0;j<window.frames.length;j++){
      check_all_in_document(window.frames[j].document);
}
});

这是我的manifest.json 的内容

{
  "manifest_version": 2,
  "name": "Getting started example",
  "description": "This extension shows a Google Image search result for the current page",
  "version": "2.0",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/"
  ]
}

这是我的HTML文件中的内容:

<!doctype html>
<!--
 This page is shown when the extension button is clicked, because the
 "browser_action" field in manifest.json contains the "default_popup" key with
 value "popup.html".
 -->
<html>
  <head>
    <title>Getting Started Extension's Popup</title>
    <style>
      body {
        font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif;
        font-size: 100%;
      }
      #status {
        /* avoid an excessively wide status text */
        white-space: pre;
        text-overflow: ellipsis;
        overflow: hidden;
        max-width: 400px;
      }
    </style>
    <!--
      - JavaScript and HTML must be in separate files: see our Content Security
      - Policy documentation[1] for details and explanation.
      -
      - [1]: https://developer.chrome.com/extensions/contentSecurityPolicy
     -->
    <script src="popup.js"></script>
  </head>
  <body>
    <div id="status"></div>
    <img id="image-result" hidden>
  </body>
</html>

好吧,令人震惊的是,我没有发现重复的(指出一个会很感激),所以这里有一个常规答案:

您的popup.html是自己的独立文档。当您执行时

doc.getElementsByTagName('input')

您正在搜索弹出窗口本身,而不是当前活动选项卡。

由于您是扩展的新手,因此仔细阅读扩展体系结构概述,甚至整个概述页面是非常重要的。但快速TL;DR:只有内容脚本才能真正与普通选项卡的内容交互。在内容脚本中,document指的是在选项卡中打开的实际页面,您的代码将在那里工作。

您已经拥有"activeTab"权限,因此您可以在单击按钮后在当前页面中注入内容脚本。

chrome.tabs.executeScript(null, {file: "content.js"}); // null for current tab

将操纵DOM的代码放在文件content.js中,并使用Messaging/Storage在扩展的各个部分之间进行通信。

最后,要注意弹出窗口在关闭时根本不存在——如果你需要与一直存在的东西交谈,那将是一个背景或事件页面。