小觑Chrome Extension

最近一朋友问了一个关于Chrome Extension的问题,因为之前从来没有接触过,然后就自己看着文档动手写了一个简单的示例。Chrome Extension除了官方的一个API接口外,其他的就是一些html,css,js的知识了,如果很熟悉这些,写一个简单的自己的插件还是可以的。这里只是做了一个最简单的功能,毕竟我的前端功底不是太好,如果想有更加深入的了解,强烈建议读下Chrome的官方文档

为何不看看官方文档?

  Chrome的官方文档做的相当的赞。如果有梯子并且能看懂一点英文的话,下边的就没必要看了。

我要做什么?

  实现的代码可以点击查看。如果没有一个自己想要的最终效果,那么做东西就会相当的没有动力。我要做的很简单,就是输入一个图片的url,然后点击加载,会在弹出的页面上加载出一张图片。最终实现的效果如下图所示:

文件组成

基本文件组成

文件名 作用
manifest.json 一些配置选项
icon.png 插件的图标,官方给出的是19px * 19px
popup.html 弹出的主页面
popup.js 外部js

manifest.json

  • manifest_version:指定文件格式的版本,目前的默认为2就可以了。
  • 下边的其他的参数配置应该就很容易明白了,当然还有一些其他的配置参数,可以根据自己的需要自行配置。
{
  "manifest_version":2,

  "name":"ChromeExtensionDemo",
  "description":"My First Chrome Extension",
  "version":"1.0",

  "browser_action":{
    "default_icon":"icon.png",
    "default_popup":"popup.html"
  }
}

popup.html

  • 主页面,即点击弹出按钮后弹出的页面,这是一个标准的html页面,其中不能包含内联事件,所有的js代码最好写在外边
<!doctype html>
<html>
  <head>
    <title>My First Chrome Extension</title>
    <style>
      body {
        font-family: "Consolas","Segoe UI", "Lucida Grande", Tahoma, sans-serif;
        font-size: 100%;
        width: 300px;
        height: 400px;
      }
      #status {
        white-space: pre;
        text-overflow: ellipsis;
        overflow: hidden;
        max-width: 600px;
      }
    </style>

    <script src="popup.js"></script>
  </head>
  <body>
    <div style="margin-top:20px">
      <label style="">Please insert a image url:</label>
      <input type="text" id="imgUrl" name="imgUrl" style="width:100%"/>
    </div>

    <div>
      <button>Load Image!</button>
      <img id="myImage" src="?" width="300" height="200" />
    </div>
  </body>
</html>

popup.js

function clickHandler(element) {
  loadImg();
}
function loadImg(){
  var imgUrl = document.getElementById("imgUrl").value;
  document.getElementById("myImage").src = imgUrl;
}
document.addEventListener('DOMContentLoaded', function () {
          document.querySelector('button').addEventListener('click', clickHandler);
        });

icon.png

顾名思义,就是该插件的图标名。

如何查看效果?

问题总结

  • 由于Chrome Extension不执行Inline JavaScript,这说明同时禁止内嵌的<script>块和内联事件(例如: <button onclick="...">),因此请不要在html中编写js代码。
  • 代码一次写成的概率很小,因此如果出现错误可以尝试着进行debug一下。
  • 出现问题后没必要直接就搜索,有时仔细的看一下错误信息也许会有收获。
上篇springboot redis实现session共享
下篇Java Tips