mirror of
https://gitee.com/bitdance-team/chrome-extension
synced 2025-10-07 16:35:15 +08:00
网页截图功能回调函数传参为null问题使用变通方法解决;规范chrome.runtime.sendMessage与chrome.runtime.onMessage.addListener;TODO: 鼠标样式onMessage Listener
This commit is contained in:
@@ -84,6 +84,7 @@ function start() {
|
|||||||
chrome.runtime.sendMessage(
|
chrome.runtime.sendMessage(
|
||||||
{
|
{
|
||||||
status: "start",
|
status: "start",
|
||||||
|
senderId: "pomo",
|
||||||
content: {
|
content: {
|
||||||
minutes,
|
minutes,
|
||||||
seconds,
|
seconds,
|
||||||
@@ -108,6 +109,7 @@ function end() {
|
|||||||
chrome.runtime.sendMessage(
|
chrome.runtime.sendMessage(
|
||||||
{
|
{
|
||||||
status: "paused",
|
status: "paused",
|
||||||
|
senderId: "pomo",
|
||||||
},
|
},
|
||||||
(response) => {
|
(response) => {
|
||||||
console.log(response);
|
console.log(response);
|
||||||
@@ -135,6 +137,7 @@ function getTimer() {
|
|||||||
chrome.runtime.sendMessage(
|
chrome.runtime.sendMessage(
|
||||||
{
|
{
|
||||||
status: "playend",
|
status: "playend",
|
||||||
|
senderId: "pomo",
|
||||||
},
|
},
|
||||||
(response) => {
|
(response) => {
|
||||||
console.log(response,"**************下面");
|
console.log(response,"**************下面");
|
||||||
@@ -178,6 +181,7 @@ resetBtn.addEventListener("click", () => {
|
|||||||
chrome.runtime.sendMessage(
|
chrome.runtime.sendMessage(
|
||||||
{
|
{
|
||||||
status: "reset",
|
status: "reset",
|
||||||
|
senderId: "pomo",
|
||||||
},
|
},
|
||||||
(response) => {
|
(response) => {
|
||||||
// console.log(response);
|
// console.log(response);
|
||||||
@@ -209,6 +213,7 @@ chrome.storage.sync.get("pomoData", ({ pomoData }) => {
|
|||||||
} else if (status === "init") {
|
} else if (status === "init") {
|
||||||
chrome.runtime.sendMessage({
|
chrome.runtime.sendMessage({
|
||||||
status: "init",
|
status: "init",
|
||||||
|
senderId: "pomo",
|
||||||
});
|
});
|
||||||
countdownTimer.innerHTML = "25:00";
|
countdownTimer.innerHTML = "25:00";
|
||||||
}else if(status === 'playend'){
|
}else if(status === 'playend'){
|
||||||
|
@@ -22,6 +22,12 @@ let array = ["minutes", "seconds", "pause", "countdownTimer", "pbutton"];
|
|||||||
let timer = null;
|
let timer = null;
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
||||||
|
console.log(`进入 assets\html\pomodoro\background.js 中的onMessage Listener`)
|
||||||
|
if (message.senderId !== "pomo") {
|
||||||
|
// 抛给下一个Listener
|
||||||
|
sendResponse();
|
||||||
|
}
|
||||||
|
|
||||||
const { status, content } = message;
|
const { status, content } = message;
|
||||||
|
|
||||||
if (status === "start") {
|
if (status === "start") {
|
||||||
@@ -78,6 +84,8 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
|||||||
// audio.play();
|
// audio.play();
|
||||||
}
|
}
|
||||||
sendResponse();
|
sendResponse();
|
||||||
|
console.log(`离开 assets\html\pomodoro\background.js 中的onMessage Listener`)
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 番茄钟倒计时功能
|
// 番茄钟倒计时功能
|
||||||
|
@@ -37,7 +37,13 @@ function inject(tab) {
|
|||||||
var takeScreenshot = inject
|
var takeScreenshot = inject
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener((req, sender, res) => {
|
chrome.runtime.onMessage.addListener((req, sender, res) => {
|
||||||
|
console.log(`进入 assets\html\screenshot\background.js 中的onMessage Listener`)
|
||||||
|
if (req.senderId !== "screenshot") {
|
||||||
|
// 抛给下一个Listener
|
||||||
|
res();
|
||||||
|
}
|
||||||
if (req.message === 'capture') {
|
if (req.message === 'capture') {
|
||||||
|
console.log("capture开始")
|
||||||
chrome.storage.sync.get((config) => {
|
chrome.storage.sync.get((config) => {
|
||||||
chrome.tabs.getSelected(null, (tab) => {
|
chrome.tabs.getSelected(null, (tab) => {
|
||||||
chrome.tabs.captureVisibleTab(tab.windowId, { format: config.format }, (image) => {
|
chrome.tabs.captureVisibleTab(tab.windowId, { format: config.format }, (image) => {
|
||||||
@@ -46,7 +52,10 @@ chrome.runtime.onMessage.addListener((req, sender, res) => {
|
|||||||
crop(image, req.area, req.dpr, config.dpr, config.format, (cropped) => {
|
crop(image, req.area, req.dpr, config.dpr, config.format, (cropped) => {
|
||||||
// 裁剪后
|
// 裁剪后
|
||||||
// console.log("cropped", cropped)
|
// console.log("cropped", cropped)
|
||||||
|
console.log("capture结束")
|
||||||
res({ message: 'image', image: cropped })
|
res({ message: 'image', image: cropped })
|
||||||
|
// 回调有问题,参数么有传回去,使用以下变通方式直接转换为可下载的文件
|
||||||
|
var link = document.createElement('a'); link.download = "学生助手 屏幕截图 " + Date.now(); link.href = cropped; link.click();
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -62,6 +71,7 @@ chrome.runtime.onMessage.addListener((req, sender, res) => {
|
|||||||
// chrome.browserAction.setBadgeText({tabId: sender.tab.id, text: ''})
|
// chrome.browserAction.setBadgeText({tabId: sender.tab.id, text: ''})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log(`离开 assets\html\screenshot\background.js 中的onMessage Listener`)
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
|
|
||||||
var jcrop,selection
|
var jcrop, selection
|
||||||
var relativePath = 'assets/html/screenshot'
|
var relativePath = 'assets/html/screenshot'
|
||||||
|
|
||||||
var overlay = ((active) => (state) => {
|
var overlay = ((active) => (state) => {
|
||||||
active = typeof state === 'boolean' ? state : state === null ? active : !active
|
active = typeof state === 'boolean' ? state : state === null ? active : !active
|
||||||
$('.jcrop-holder')[active ? 'show' : 'hide']()
|
$('.jcrop-holder')[active ? 'show' : 'hide']()
|
||||||
chrome.runtime.sendMessage({message: 'active', active})
|
chrome.runtime.sendMessage({ message: 'active', senderId: "screenshot", active })
|
||||||
})(false)
|
})(false)
|
||||||
|
|
||||||
var image = (done) => {
|
var image = (done) => {
|
||||||
@@ -33,7 +33,7 @@ var init = (done) => {
|
|||||||
selection = null
|
selection = null
|
||||||
}, 100)
|
}, 100)
|
||||||
}
|
}
|
||||||
}, function ready () {
|
}, function ready() {
|
||||||
jcrop = this
|
jcrop = this
|
||||||
|
|
||||||
$('.jcrop-hline, .jcrop-vline').css({
|
$('.jcrop-hline, .jcrop-vline').css({
|
||||||
@@ -53,13 +53,15 @@ var init = (done) => {
|
|||||||
|
|
||||||
var capture = (force) => {
|
var capture = (force) => {
|
||||||
chrome.storage.sync.get((config) => {
|
chrome.storage.sync.get((config) => {
|
||||||
|
console.log(config)
|
||||||
if (selection && (config.method === 'crop' || (config.method === 'wait' && force))) {
|
if (selection && (config.method === 'crop' || (config.method === 'wait' && force))) {
|
||||||
jcrop.release()
|
jcrop.release()
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
console.log("准备capture")
|
||||||
chrome.runtime.sendMessage({
|
chrome.runtime.sendMessage({
|
||||||
message: 'capture', area: selection, dpr: devicePixelRatio
|
message: 'capture', senderId: "screenshot", area: selection, dpr: devicePixelRatio
|
||||||
}, (res) => {
|
}, (res) => {
|
||||||
console.log("res: ", res)
|
console.log("capture回调结果:", res)
|
||||||
overlay(false)
|
overlay(false)
|
||||||
selection = null
|
selection = null
|
||||||
save(res.image, config.format, config.save)
|
save(res.image, config.format, config.save)
|
||||||
@@ -68,8 +70,8 @@ var capture = (force) => {
|
|||||||
}
|
}
|
||||||
else if (config.method === 'view') {
|
else if (config.method === 'view') {
|
||||||
chrome.runtime.sendMessage({
|
chrome.runtime.sendMessage({
|
||||||
message: 'capture',
|
message: 'capture', senderId: "screenshot",
|
||||||
area: {x: 0, y: 0, w: innerWidth, h: innerHeight}, dpr: devicePixelRatio
|
area: { x: 0, y: 0, w: innerWidth, h: innerHeight }, dpr: devicePixelRatio
|
||||||
}, (res) => {
|
}, (res) => {
|
||||||
overlay(false)
|
overlay(false)
|
||||||
save(res.image, config.format, config.save)
|
save(res.image, config.format, config.save)
|
||||||
@@ -89,10 +91,10 @@ var filename = (format) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var save = (image, format, save) => {
|
var save = (image, format, save) => {
|
||||||
var link = document.createElement('a')
|
var link = document.createElement('a')
|
||||||
link.download = filename(format)
|
link.download = filename(format)
|
||||||
link.href = image
|
link.href = image
|
||||||
link.click()
|
link.click()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,6 +107,11 @@ window.addEventListener('resize', ((timeout) => () => {
|
|||||||
})())
|
})())
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener((req, sender, res) => {
|
chrome.runtime.onMessage.addListener((req, sender, res) => {
|
||||||
|
console.log(`进入 assets\html\screenshot\js\content.js 中的onMessage Listener`)
|
||||||
|
if (req.senderId !== "screenshot") {
|
||||||
|
// 抛给下一个Listener
|
||||||
|
res();
|
||||||
|
}
|
||||||
if (req.message === 'init') {
|
if (req.message === 'init') {
|
||||||
res({}) // prevent re-injecting
|
res({}) // prevent re-injecting
|
||||||
|
|
||||||
@@ -119,5 +126,6 @@ chrome.runtime.onMessage.addListener((req, sender, res) => {
|
|||||||
capture(true)
|
capture(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log(`离开 assets\html\screenshot\js\content.js 中的onMessage Listener`)
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
@@ -10,6 +10,22 @@ chrome.contextMenus.create({
|
|||||||
// 打印消息日志
|
// 打印消息日志
|
||||||
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
||||||
console.log("request", request, "path", sender.url.replace(sender.origin, ""), "sender", sender, "sendResponse", sendResponse);
|
console.log("request", request, "path", sender.url.replace(sender.origin, ""), "sender", sender, "sendResponse", sendResponse);
|
||||||
|
|
||||||
|
console.log(`进入 assets\js\background.js 中的onMessage Listener`)
|
||||||
|
|
||||||
|
// 抛给下一个Listener
|
||||||
|
sendResponse();
|
||||||
|
|
||||||
|
console.log(`离开 assets\js\background.js 中的onMessage Listener`)
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* refer:
|
||||||
|
* https://stackoverflow.com/questions/4924125/can-chrome-extension-background-pages-have-multiple-listeners
|
||||||
|
* https://developer.chrome.com/extensions/runtime#event-onMessage
|
||||||
|
* https://blog.csdn.net/lamp_yang_3533/article/details/100174074
|
||||||
|
*/
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@@ -7,10 +7,18 @@ $(function() {
|
|||||||
|
|
||||||
// 每次改变开关状态时刷新页面使功能及时生效
|
// 每次改变开关状态时刷新页面使功能及时生效
|
||||||
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
||||||
// TODO: 这里不能这么写,否则会导致其他模块发送消息时触发页面刷新
|
console.log(`进入 assets\js\mouse-effects\click.js 中的onMessage Listener`)
|
||||||
|
if (request.senderId !== "mouse-effects") {
|
||||||
|
// 抛给下一个Listener
|
||||||
|
sendResponse();
|
||||||
|
}
|
||||||
|
// TODO: 这里不能这么写,否则会导致其他模块发送消息时触发页面刷新
|
||||||
// console.log('click');
|
// console.log('click');
|
||||||
// location.reload();
|
// location.reload();
|
||||||
// sendResponse('Reload page');
|
// sendResponse('Reload page');
|
||||||
|
|
||||||
|
console.log(`离开 assets\js\mouse-effects\click.js 中的onMessage Listener`)
|
||||||
|
return true;
|
||||||
})
|
})
|
||||||
|
|
||||||
// 控制功能是否开启
|
// 控制功能是否开启
|
||||||
|
@@ -6,10 +6,18 @@ $(function() {
|
|||||||
console.log("[BitDance extension] 学生助手插件 - 鼠标样式模块加载成功");
|
console.log("[BitDance extension] 学生助手插件 - 鼠标样式模块加载成功");
|
||||||
// 每次改变开关状态时刷新页面使功能及时生效
|
// 每次改变开关状态时刷新页面使功能及时生效
|
||||||
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
||||||
// TODO: 这里不能这么写,否则会导致其他模块发送消息时触发页面刷新
|
console.log(`进入 assets\js\mouse-effects\mouse-style.js 中的onMessage Listener`)
|
||||||
|
if (request.senderId !== "mouse-effects") {
|
||||||
|
// 抛给下一个Listener
|
||||||
|
sendResponse();
|
||||||
|
}
|
||||||
|
// TODO: 这里不能这么写,否则会导致其他模块发送消息时触发页面刷新
|
||||||
// console.log('mouse');
|
// console.log('mouse');
|
||||||
// location.reload();
|
// location.reload();
|
||||||
// sendResponse('Reload page');
|
// sendResponse('Reload page');
|
||||||
|
|
||||||
|
console.log(`离开 assets\js\mouse-effects\mouse-style.js 中的onMessage Listener`)
|
||||||
|
return true;
|
||||||
})
|
})
|
||||||
|
|
||||||
// 控制功能是否开启
|
// 控制功能是否开启
|
||||||
|
Reference in New Issue
Block a user