一个Chrome拓展——HttpPost

简介:

周末花了点时间做了一个chrome拓展,叫HttpPost,顾名思义是用来测试http的post请求。

先直接看效果

插件与拓展

在说这个做的过程前,先说明什么是Chrome插件、Chrome拓展

1.开发语言区别
拓展:HTML + Javascript 
插件:理论上可以用任何一种生成二进制程序的语言,比如 C/C++


2.功能上区别
拓展:通过调用Chrome提供的Chrome API扩展浏览器功能的一种组件 
插件:调用Webkit内核NPAPI来扩展内核功能的一种组件

3.层次区别
拓展: 浏览器应用层
插件:浏览器的底层

但并不是说两者之间没有关系,

Chrome 扩展本身也支持包含 Plug-in 模块,这部分可以使用 C/C++ 等语言开发。比如 web QQ 的截图扩展,就是用了这项功能。 

如果把浏览器比作操作系统,扩展就好比工具类应用程序,插件则好比驱动程序。(某个贴说的)

现在开始说做的过程

最终完成就是以上的文件

这里面最重要的是manifest.json这个文件

复制代码
{    
    "name": "HttpPost",    
    "version": "1.0.0",   
    "manifest_version": 2,     
    "description": "此插件能够让你更简单测试HttpPost请求",        
    "icons": {       
        "128": "httppost_128.png",     
        "48": "httppost_48.png",      
        "16": "httppost_16.png"  
    },  "permissions": [
        "http://*/",
        "https://*/"
    ],
    "browser_action": {
        "default_icon": "httppost.png",
        "default_popup": "popup.html"
    }
}
复制代码

这里就不讲里面属性的意义,本身属性的名称已经很明显了。

就讲下

permissions,表明这个拓展的所需要的权限,"http://*/","https://*/",表明能访问http,https的域名,不会出现跨域问题。

browser_action:表明名的是拓展的类型,拓展有三种类型page_action, browser_action, app

popup.html

这个就是效果图里的HTML

复制代码
<!doctype html>
<html>
    <head>
        <title>HttpPost Test</title>
        <link rel="stylesheet" type="text/css" href="layout.css" />
        <script type="text/javascript"  src="popup.js"></script>
    </head>
    <body>
        <div class="container">
            <div class="reqMethod">
                <span>请求方式:</span>
                <label>Get</label><input name="method" type="radio" value="GET" />
                <label>Post</label><input name="method" type="radio" value="POST" />
            </div>
            <div class="">
                <span>请求地址:</span>
                <input name="url" type="text" />
            </div>
            <div class="">
                <span>请求参数:</span>
                <textarea name="data" class="reqData"></textarea>
            </div>
            <div class="">
                <span>响应数据:</span>
                <textarea name="responseData"></textarea>
            </div>
            <div class=""><button type="button" id="go" class="">GO!</button></div>
            <div style="clear:both"></div>
        </div>
    </body>
</html>
复制代码

popup.js

这跟普通的javascript没什么区别,但是下面的特点是全部都是用原生的JS。

复制代码
(function(){

    document.addEventListener('DOMContentLoaded', function () {
        Event.beginRequest();
        Event.bindRadio();
    });


    var DataManage = {

        getRequestData : function(){
            var result = {
                method : document.querySelector("input[name=method]:checked").value,
                url : document.querySelector("input[name=url]").value,
                data : document.querySelector("textarea[name=data]").value
            };
            return result;
        },
        setResponseData : function(res){
            document.querySelector("textarea[name=responseData]").value = res.responseText;
        }
        
        
    }

    var Ajax = {

        req : function (params, callback) {
            
            var req = Ajax.getRequest(callback);        
            req.open(params.method, params.url, true);
            req.send(params.data);
        },
        getRequest : function (callback) {
        
            var req = new XMLHttpRequest();

            req.onreadystatechange = function() {
                if (req.readyState != 4)
                    return;
                if (req.status == 200) {
                    callback(req);
                } else {
                    alert("请求失败:" + req.statusText);
                }
                return true;
            };
            return req;
        }
    };

    var Event = {
        beginRequest : function(){
            var goBtn  = document.querySelector("#go");
            goBtn.addEventListener('click', function(){
                var result = DataManage.getRequestData();
                Ajax.req(result, function(res){
                    DataManage.setResponseData(res);                
                });
            }, false);
        },
        bindRadio : function(){
            var labels = document.querySelectorAll(".reqMethod label");
            
            labels[0].addEventListener('click', function(){    
                document.querySelector("input[value=GET]").checked = true;
            }, false);
            
            labels[1].addEventListener('click', function(){    
                document.querySelector("input[value=POST]").checked = true;
            }, false);
        }
    }
})();
复制代码

样式就不放出来了。

PS:本来想直接把源码放上来,但是好像没有上传资源地方。

总结

做Chrome拓展是非常简单的,只需要HTML+Javascript就行了,下次做一个Chrome插件,不过目前没什么需求,如果大家有什么好想法就告诉我。

分类:  1.前端基础


本文转自 海角在眼前 博客园博客,原文链接:http://www.cnblogs.com/lovesong/p/3468218.html    ,如需转载请自行联系原作者
相关文章
|
9月前
|
Web App开发 存储 JavaScript
走进Chrome拓展开发,定制自己的图床扩展
走进Chrome拓展开发,定制自己的图床扩展
|
Web App开发 开发者
Chrome 插件:自己写的插件提示请停用以开发者模式运行的插件处理方法,该拓展程序未列在chrome网上应用商店中,并可能是在您不知情的情况下添加的解决办法
Chrome 插件:自己写的插件提示请停用以开发者模式运行的插件处理方法,该拓展程序未列在chrome网上应用商店中,并可能是在您不知情的情况下添加的解决办法
468 0
Chrome 插件:自己写的插件提示请停用以开发者模式运行的插件处理方法,该拓展程序未列在chrome网上应用商店中,并可能是在您不知情的情况下添加的解决办法
|
Web App开发 开发者
Web开发者最想要的20款Chrome拓展
译文链接:http://www.oschina.net/news/16299/20-most-wanted-chrome-extensions
748 0
|
Web App开发 前端开发
自制Chrome拓展
淘宝试用自动点击: 谷歌其实就是一些html+css+js+静态资源.但是里面有一个特别的配置文件manifest.json.该文件和Android的那个androidmanifest.xml类似,记录了该APP的基础信息.
1216 0
|
29天前
|
Web App开发 人工智能 JSON
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
AutoMouser是一款Chrome扩展程序,能够实时跟踪用户交互行为,并基于OpenAI的GPT模型自动生成Selenium测试代码,简化自动化测试流程。
139 17
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
|
5月前
|
Web App开发 数据采集 存储
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
本文探讨了如何利用Chrome DevTools Protocol (CDP) 与 Selenium WebDriver 提升浏览器自动化效率,结合代理IP技术高效采集微博数据。通过CDP,开发者可直接操作浏览器底层功能,如网络拦截、性能分析等,增强控制精度。示例代码展示了如何设置代理IP、cookie及user-agent来模拟真实用户行为,提高数据抓取成功率与稳定性。适用于需要频繁抓取互联网数据的应用场景。
711 3
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
|
1月前
|
Web App开发 安全 前端开发
一个接口4个步骤轻松搞定最新版Chrome、Edge、Firefox浏览器集成ActiveX控件
目前的浏览器市场,谷歌浏览器占据了半壁江山,因此,谷歌也是最有话语权的,2015年开始取消支持 NPAPI 插件,2022 年10月停止支持 PPAPI 插件;而曾经老大哥IE浏览器也已停止服务,退出历史舞台,导致大量曾经安全、便捷的ActiveX控件无法使用。为了解决这个难题,本人特研发出allWebPlugin中间件,重新让所有ActiveX控件能在谷歌、火狐等浏览器使用。
|
1月前
|
Web App开发 数据采集 JavaScript
Chrome浏览器实例的TypeScript自动化脚本
Chrome浏览器实例的TypeScript自动化脚本
|
3月前
|
Web App开发 缓存 安全
WIN11 Chrome 双击打不开闪退及Chrome浏览器不能拖拽文件crx
【11月更文挑战第6天】本文介绍了 WIN11 系统中 Chrome 浏览器双击打不开闪退及不能拖拽文件 crx 的原因和解决方法。包括浏览器版本过旧、扩展程序冲突、硬件加速问题、缓存过多、安全软件冲突、系统文件损坏、用户配置文件损坏等问题的解决方案,以及 crx 文件的屏蔽、权限问题和文件格式问题的处理方法。
364 2
|
3月前
|
Web App开发 Linux iOS开发
Chrome浏览器如何导出所有书签并导入书签
【11月更文挑战第4天】本文介绍了如何在 Chrome 浏览器中导出和导入书签。导出时,打开书签管理器,点击“整理”按钮选择“导出书签”,保存为 HTML 文件。导入时,同样打开书签管理器,点击“整理”按钮选择“导入书签”,选择之前导出的 HTML 文件即可。其他主流浏览器也支持导入这种格式的书签文件。
2389 2