簡體   English   中英

使用Javascript for Chrome Extension檢查其他網站上的所有框的問題

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

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

我正在嘗試創建一個Google 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在擴展的各個部分之間進行通信。

最后,要小心彈出窗口在關閉時根本不存在 - 如果你需要談論總是存在的東西,那將是一個背景事件頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM