chrome插件开发示例

今天早上尝试开发一个chrome插件

 

首先 我们需要建立一个文件夹 名字随便取 我的就叫BaiduNoAd

 

然后 在里面 建立一个 文件 manifest.json 它其实就是一个json格式的文本

 

{
    "manifest_version": 2,  
    "name": "百度广告屏蔽",
    "version": "1.0",
    "description": "白强",
    "background": { "scripts": ["background.js"] },
    "permissions": [
    "http://www.baidu.com/"
     ],
    "browser_action": {
    "default_icon": "bq.png",
    "default_popup": "popup.html"
  }
}

 

解释一下 manifest_version是

用整数表示manifest文件自身格式的版本号。从Chrome 18开始,开发者应该(不是必须,但是2012年底左右就必须了)指定版本号为2(没有引号),如下所示:

"manifest_version": 2


name version description就不解释了
background “background”许可让Chrome继续运行脚本(即使最后关闭窗口),直到用户显式地退出浏览器。

permissions 是一个数组 里面就是 可以执行的网站权限

扩展或app将使用的一组权限。每个权限是一列已知字符串列表中的一个,如geolocatioin或者一个匹配模式,来指定可以访问的一个或者多个主机。一些权限在安装之前,会告知用户,具体参考:Permission Warnings.

 

brower_action 也是一个数组

 

其中的default_icon是展示在chrome上的图标 default_popup是点击图标之后默认弹出的页面

 

首先是一个popup.html它就是一个普通的html文件如下

 

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <style type="text/css">
        @-webkit-keyframes border {
            from {
                border: #749a02 1px solid;
            }
            50% {
                border: #d45500 1px solid;
            }
            to {
                border: #749a02 1px solid;
            }
        }
        @-webkit-keyframes greenPulse {
            from {
                background-color: #749a02;
                -webkit-box-shadow: 0 0 9px #333;
            }
            50% {
                background-color: #91bd09;
                -webkit-box-shadow: 0 0 18px #91bd09;
            }
            to {
                background-color: #749a02;
                -webkit-box-shadow: 0 0 9px #333;
            }
        }
        INPUT {
            border: #fff 1px solid;
            margin: 10px 0px 10px 10px;
            padding-left: 10px;
            float: left;
            font-size: 1em;
            line-height: 1.5em;
            height: 25px;
            -webkit-animation-duration: 2s;
            -webkit-animation-iteration-count: infinite;
            -webkit-animation-name: border;
            -webkit-animation-duration: 3s;
        }
        .btn {
            background: #222 url(btn.png) repeat-x 0 0;
            display: inline-block;
            color: #fff !important;
            line-height: 1;
            text-decoration: none;
            -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.25);
            text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25);
            border: 1px solid rgba(0, 0, 0, 0.25);
            position: relative;
            cursor: pointer;
            background-position: left bottom;
            -webkit-border-radius: 3px;
            -webkit-animation-duration: 2s;
            -webkit-animation-iteration-count: infinite;
            -webkit-animation-name: greenPulse;
            -webkit-animation-duration: 3s;
        }
        .btn:hover {
            background-color: #007d9a;
        }
    </style>
</head>

<body>
    <form action="http://www.baidu.com/baidu" target="_blank">
        <table>
            <tr>
                <td>
                    <input name=tn type=hidden value=baidu>
                    <a href="http://www.baidu.com/">
                        <img src="http://img.baidu.com/img/logo-80px.gif" alt="Baidu" align="bottom" border="0">
                    </a>
                    <input type=text name=word size=30>
                    <input type="submit" class="btn" value="百度搜索">
                </td>
            </tr>
        </table>
    </form>
</body>

</html>

 

 

接下来就看一下background.js是怎么个内容

 

function InsertFunc(tabId, changeInfo, tab) {
    chrome.tabs.executeScript(tabId, {
        file: "main.js"
    });
}
chrome.tabs.onUpdated.addListener(InsertFunc);
chrome.tabs.onSelectionChanged.addListener(InsertFunc);

 

它的意思是让chrome在浏览器做自发更新的时候或是标签页切换的时候执行main.js ,写法的参数就是那样

 

其他还有些

 

chrome.tabs.onCreated是在创建一个标签页的时候触发

chrome.windows.onFocusChanged是在窗口重新获得焦点的时候触发 

chrome.tabs.onRemoved是在标签关闭的时候触发

 

它们的参数都是function

 

接下来就是主要的main.js 它可以动态修改页面属性

 

(function () {
    var right = document.getElementById('content_right');
    var results = document.getElementsByClassName('result');
    var ads = document.getElementsByTagName('table');
    for (var i = 0; i < ads.length; i++) {
        ads[i].style.display = 'none';
    }
    for (var j = 0; j < results.length; j++) {
        results[j].style.width = '800px';
    }
    if (right) {
        right.style.display = 'none';
    }
    window.setTimeout(arguments.callee, 500);
})();

 

 

匿名自调函数 每过500ms 执行一次自己 检查是否有以上css属性 并修改之

这样插件就开发完了,文件结构如下

 

 

然后打开 chrome->工具->扩展程序->加载正在开发的程序->选择你的文件夹即可

 

实现的效果如下:

 

未用插件

 

 

 

用了插件 

 

 

 

 

 

--------------------------------------------------------------------------

 

简单的开发。。。

 


 

最后附上源码

 

下载 

posted @ 2014-05-06 12:38  强子~Developer  阅读(667)  评论(2编辑  收藏  举报