javascript - Chrome 扩展 - popup.html 中的按钮

标签 javascript google-chrome google-chrome-extension

首先,我不是专业程序员,只是玩玩而已。 我尝试编写一个小 Chrome 扩展来管理其他扩展。 但我已经无法创建一个按钮,我可以单击该按钮来发生某些事情。 我的主要问题是,在尝试获取 elementbyid 时,它返回 NULL 并因 addEventListener 失败。 也许我只是太愚蠢才看到这个问题。我添加了 DOMContentLoaded,因为有人写了内容加载有问题。

感谢您的帮助。

popup.js

  var  bgp = chrome.extension.getBackgroundPage()
  var arr = []; // the array
  
  document.addEventListener('DOMContentLoaded', function () {
    
    var tbinput = document.getElementById("tbinput");
    var btadd = document.getElementById("btadd");
    btadd.addEventListener('click', addItems());
  };
  
  function addItems(){
        arr.push(input.value); // add textbox value to array
        input.value = ''; // clear textbox value
  };

popup.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>
     </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>
    <input type='text' id='tbinput'>
    <br>
    <input type='button' id='btadd' value='Add'>
    <br>
    <input type='button' id='view'  value='View all Contents'>  
    <br>
    <input type='text' id='output'>

  </body>

</html>

ma​​nifest.json

{
  "name": "Extensions Manager",
  "description": "Random",
  "version": "2.0",
  "permissions": [
   "management"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Extensions Manager",
    "default_popup":"popup.html"
  },
  "manifest_version": 2
}

最佳答案

您正在触发 addItems 函数,而不是将其传递给 addEventListener 方法。

btadd.addEventListener('click', addItems()); // addItems() should be addItems

另一个问题是您的 DOMContentLoaded 监听器,它没有正确关闭:

}; // This should be });

var arr = []; // the array
var tbinput;

document.addEventListener('DOMContentLoaded', function() {
  tbinput = document.getElementById("tbinput");
  document.getElementById("btadd").addEventListener('click', addItems);
});

function addItems() {
  arr.push(tbinput.value); // add textbox value to array
  tbinput.value = ''; // clear textbox value
};
<input type='text' id='tbinput'>
<br>
<input type='button' id='btadd' value='Add'>
<br>
<input type='button' id='view' value='View all Contents'>
<br>
<input type='text' id='output'>

关于javascript - Chrome 扩展 - popup.html 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31379207/

相关文章:

javascript - 使用 Javascript 模拟远程 => 真实链接点击

Javascript:如何获取选定文本范围之外的文本

css - 事件图像周围的蓝色轮廓

google-chrome-extension - Chrome : How to close tab from within a page?

javascript - 谷歌浏览器扩展的自动化测试

javascript - jQuery 严重计算元素的高度

javascript - 一次又一次调用异步函数,直到在 Node JS 中得到预期的结果

html - 在 Chrome 中鼠标悬停时出现额外像素。双滚动条

android - Android 中的 Chrome 如何知道应用程序已安装

javascript - 内容脚本不会在每次页面加载时都被注入(inject)