Chrome扩展开发:pop传递参数给当前页面,实现多账号快捷登录
功能描述
通过浏览器插件,实现账号的快速登录,切换账号
功能展示
基本概念
popup
content-script
注入到网页中的 javascript 脚本就是 content-script
manifest.json
扩展配置清单,必须
拓展程序目录结构
代码
mainifest.json
{
"name": "用户登录",
"manifest_version":2,
"version":"1.0",
"description":"实现多账号切换,快速登录",
"browser_action":{
"default_popup":"popup.html"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": [ "js/jquery.min.js", "js/content-script.js" ]
}
]
}
popup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf8">
<script src="js/jquery.min.js"></script>
<script src="js/popup.js"></script>
</head>
<body style="width: 300px">
<h1>账号登录:</h1>
<p id='flag'></p>
<input id='pop_uid' value="" >
<select id='selectUser'>
<option value="">选择用户</option>
<option value="11923999">用户1</option>
<option value="123">用户2</option>
</select>
<button id='login'>登录</button>
</body>
</html>
popup.js
$(function () {
$("#login").click(function () {
var pop_uid = $("#pop_uid").val()
// chrome.tabs.query可以通过回调函数获得当前活跃tab
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
// 取出当前标签页的 tag_id, 发送一个消息出去, 同时带上回调函数
chrome.tabs.sendMessage(tabs[0].id, { action: "login",token:"这里是传入的token" }, function (response) {
// 回调函数,把传回的信息渲染在popup.html上
$("#flag").text(response)
});
});
});
$("#selectUser").change(function () {
var selectText = $(this).children('option:selected').val();
$("#pop_uid").val(selectText)
});
});
content-script.js
var storage=window.localStorage;
console.log('保存成功');
chrome.extension.onMessage.addListener(
function (request, sender, sendResponse) {
console.log(request)
if (request.action === "login") {
var token = request.token
//写入token
storage["token"]=token;
console.log(token)
if (token.length > 0) {
// 如果获取的值不为空则返回数据到 popup.js
sendResponse(token);
} else {
sendResponse("no data found!");
}
}
}
);
content-script.js 实现了传入的token,写入当前域名下的localStorage。
目前很多主流网站都是通过写入到localStorage 存储用户登录信息。如果你是写cookie的,也可以根据需求进行改动。
可以根据各自的需求来修改其中的部分,比如:在 popup.js 中请求api,将用户id传入,通过接口获取可用的token值。