周末花了点时间做了一个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插件,不过目前没什么需求,如果大家有什么好想法就告诉我。
分享到:
相关推荐
chrome插件开发入门教程
简单介绍开发一个chrome的步骤,清晰易懂;简单介绍开发一个chrome的步骤,清晰易懂
适合浏览器插件开发入门。。。。。。。。。。。。。。。。。。。
一个超简单的自己开发的chrome插件,没有实际效果,仅供入门参考。
:bell:请确保您对Chrome插件开发已经有基本的了解,入门教程: 。 在umi配置文件cofig/config.ts或.umirc.ts中配置extensions 。完整配置项说明请查阅。 如果脚脚架可使用 。 插件开发 如希望对本插件进行开发,可...
chrome扩展插件的3个例子帮助入门,弹窗一个例子,注入脚本一个例子,桌面提示一个例子
预算管理插件源码,适合Chrome插件开发的入门学习项目
本资源是谷歌插件的讲解普及以及开发教程, 适用于想要独立开发谷歌插件并发布的入门同学, 本教程详细讲解了谷歌插件的多种展现形式以及展现形式的应用场景, 还有各种展现形式的开发教程
单击“加载解压后的扩展”并选择克隆的目录入门:构建 Chrome 扩展程序 - 加载扩展程序如何使用搜索突出显示的文本选择要检查的文本,右键单击它,然后单击“使用 LibGen 搜索”按钮。 将打开一个带有搜索结果的新...
Chrome扩展Chrome-extensionify 是一个预配置的项目脚手架,用于使用 browserify 和 commonJS/npm 开发 Chrome 扩展。 这允许您使用 commonJS 'require' 语句编写模块化、节点样式的代码以进行依赖项管理并将其打包...
grunt-chrome-extension-reload 重新加载打开的 chrome 扩展选项卡 (chrome://extensions) 以缓解 chrome 扩展开发的单调性。 使用 prasmussen 的与 Chrome 交互。入门这个插件需要 Grunt ~0.4.2 这个插件还需要安装...
在Chrome中获取扩展程序以进行开发 导航至chrome://extensions打开“扩展管理”页面。 通过单击开发人员模式旁边的切换开关启用开发人员模式。 单击LOAD UNPACKED按钮,然后选择dist/目录。 发展 基本应用程序组件...
天气插件Weather Plugin是chrome的扩展程序,用于学习JQuery,popper.js,Bootstrap Carousel Plugin和Weather API。插件说明此扩展程序可以更好地显示来自openweathermap.org的当前天气数据,天气预报数据和紫外线...
Chrome Extension v3入门版 Chrome v3插件的最小模板 该存储库包含一个最小的Chrome / Chromium扩展程序,该扩展程序使用清单(v3)的最新版本。 您可以将其用作开发扩展的基础。 它还可以为您提供有关如何将v2扩展...
ReactChrome扩展MV3入门让您开始使用react和typescript开发chrome扩展(清单v3)的样板,几乎没有配置到零。特征React打字稿Sass / CSS 清单版本3 最多支持ES2021语法(使用babel) 浏览器列表创建自定义html页面和...
##查看日志记录安装后,您可以通过访问Chrome://扩展,单击以启用开发人员模式,然后单击Cel图标旁边的链接,然后单击它说入门视图:_generated_background_page.html##手动调整日志记录在扩展后的背景页的JS控制台...
对于开发人员,系统管理员和所有人而言,都可以使用API推送通知。 该存储库是Chanify的chrome扩展。入门安装(1.0.5及更高版本)。 安装 (1.0.5及更高版本)。 获取发送令牌,。 配置Chrome扩展程序。贡献贡献...
面向Recoil开发人员的工具 目录关于该项目Total RecoilJS是一种工具,旨在帮助开发人员通过Chrome扩展程序可视化和跟踪其Recoil状态。建于入门要启动并运行本地副本,请按照以下简单步骤操作。先决条件安装React ...
此插件正在开发中,API可能会更改。入门安装从pub安装库: dependencies: flutter_web_browser: "^0.14.0"导入库import 'package:flutter_web_browser/flutter_web_browser.dart';打开网页FlutterWebBrowser....
Chrome插件开发文档: jQuery文档: tasks and goals stage 1 -- 入门 虽然是入门,但是貌似事情挺多的,所以这一阶段比较辛苦 熟悉基本HTML和Javascript BootStrap前端框架 学习使用版本控制系统 git workflow:() ...