create-chuntianxiaozhu
Version:
春天小猪模板工具
77 lines (68 loc) • 1.9 kB
text/typescript
import { BackgroundOnEvent, RightClickEvent } from "./modules";
import { apiRequest } from "./utils/api";
chrome.runtime.onInstalled.addListener(() => {
RightClickEvent.forEach((item) => {
chrome.contextMenus.create({
id: item.id,
title: item.title,
contexts: item.contexts,
});
});
});
chrome.tabs.onUpdated.addListener((_tabId, _changeInfo, tab) => {
console.log(`Change URL: ${tab.url}`);
});
chrome.tabs.onRemoved.addListener((_tabId, removeInfo) => {
console.log(removeInfo);
});
chrome.bookmarks.getRecent(10, (results) => {
console.log(`bookmarks:`, results);
});
chrome.contextMenus.onClicked.addListener((clickData) => {
// 如果点击的是搜索淘宝店铺且选中文字了
const item = RightClickEvent.find((item) => item.id == clickData.menuItemId);
if (item) {
item.event(clickData);
}
});
chrome.runtime.onMessage.addListener(
(request: Message, _sender, sendResponse) => {
const { type, data } = request;
if (type == "apiRequest") {
// API请求成功的回调
data.success = (result: any) => {
sendResponse({
status: 200,
data: result,
});
};
// API请求失败的回调
data.fail = (msg: any) => {
sendResponse({
status: 500,
msg,
});
};
// 发起请求
apiRequest(data as any);
} else {
// 检测后台事件
const eventItem = BackgroundOnEvent.find((item) => item.type == type);
eventItem
?.event(data)
.then((result) => {
sendResponse && sendResponse(result);
})
.catch(() => {
// TODO 捕获错误,避免太多错误堆栈
// 如果错误直接数据置null
sendResponse &&
sendResponse({
error: true,
});
});
}
return true;
}
);
export {};