From 773ee26d90be5f65c0b9dac85547f3e4ee467c63 Mon Sep 17 00:00:00 2001 From: bergyu Date: Thu, 22 Jul 2021 20:35:58 +0800 Subject: [PATCH] opt chrome --- lib/misc.js | 2 +- proto.js | 17 +++++++++++++++++ publish/chrome/chrome.js | 7 +++++++ publish/chrome/contexts.js | 34 ++++++++++++++++++---------------- 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/lib/misc.js b/lib/misc.js index 3db23d89..67b7aa09 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -109,7 +109,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg }) can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(), - "_", (msg._can.sup||msg._can)._name, "_daemon", dataset.daemon||"", + "_", (msg._can.sup||msg._can)._name, "_daemon", msg._daemon||dataset.daemon||"", ), form, cb) }, WSS: function(can, args, cb, onopen, onclose, onerror) { diff --git a/proto.js b/proto.js index ec03909b..62d87ee2 100644 --- a/proto.js +++ b/proto.js @@ -105,3 +105,20 @@ Volcanos.meta._load = function(url, cb) { return item } } + +var kit = { + MDB_TIME: "time", + MDB_TYPE: "type", + MDB_NAME: "name", + MDB_TEXT: "text", + MDB_LINK: "link", +} +var ctx = { + CONTEXT: "context", + COMMAND: "command", + ACTION: "action", + CONFIG: "config", +} +var cli = { + RUN: "run", +} diff --git a/publish/chrome/chrome.js b/publish/chrome/chrome.js index 0765afc3..1400685a 100644 --- a/publish/chrome/chrome.js +++ b/publish/chrome/chrome.js @@ -57,11 +57,18 @@ Volcanos("chrome", { message: message, title: title||can._name, iconUrl: "/favicon.ico", type: "basic", })}, can.misc.WSS(can, {type: "chrome", name: "chrome"}, function(event, msg, cmd, arg) { + if (msg.Option("_target")) { msg.detail = ["", "", ""].concat(msg.detail) + chrome.tabs.sendMessage(parseInt(msg.Option("_target")), msg, function(res) { + msg.Copy(res), msg.Reply() + }) + return + } can.core.CallFunc([can, cmd], {can: can, msg: msg, cmds: arg, cb: function() { msg.Reply() }}) }) chrome.runtime.onMessage.addListener(function(req, sender, cb) { var msg = can.request({}, {tid: sender.tab.id, url: sender.url}) + msg._daemon = "chrome."+sender.tab.id can.core.List(req.option, function(key) { msg.Option(key, req[key][0]) }) can.run(msg._event, req.detail||[], cb) return true diff --git a/publish/chrome/contexts.js b/publish/chrome/contexts.js index b7a776a1..d9af8597 100644 --- a/publish/chrome/contexts.js +++ b/publish/chrome/contexts.js @@ -5,33 +5,35 @@ Volcanos("chrome", { console.log(arg) cb() }, - spide: function(can, msg) { + spide: function(can, msg) { var has = {} can.page.Select(can, document.body, "video", function(item) { + if (!item.src || has[item.src]) { return } has[item.src] = true var p = can.page.Select(can, document.body, "p.title")[0] - var ls = item.src.split("?") var ls = ls[0].split(".") - msg.Push("time", can.base.Time()) - msg.Push("type", "video") - msg.Push("name", (p && p.innerText || "video")+"."+ls[ls.length-1]) - msg.Push("text", item.src) - msg.Push("link", item.src) + msg.Push(kit.MDB_TIME, can.base.Time()) + msg.Push(kit.MDB_TYPE, "video") + msg.Push(kit.MDB_NAME, (p && p.innerText || "video")+"."+ls[ls.length-1]) + msg.Push(kit.MDB_TEXT, item.src) + msg.Push(kit.MDB_LINK, item.src) }) + can.page.Select(can, document.body, "img", function(item) { + if (!item.src || has[item.src]) { return } has[item.src] = true var ls = item.src.split("?") var ls = ls[0].split("/") - msg.Push("time", can.base.Time()) - msg.Push("type", "img") + msg.Push(kit.MDB_TIME, can.base.Time()) + msg.Push(kit.MDB_TYPE, "img") if (item.src.indexOf("data:image") == 0) { - msg.Push("name", item.src.slice(item.src.length-20)) + msg.Push(kit.MDB_NAME, item.src.slice(item.src.length-20)) } else { - msg.Push("name", ls[ls.length-1]||"image.jpg") + msg.Push(kit.MDB_NAME, ls[ls.length-1]||"image.jpg") } - msg.Push("text", item.src) - msg.Push("link", item.src) + msg.Push(kit.MDB_TEXT, item.src) + msg.Push(kit.MDB_LINK, item.src) }) }, field: function(can, msg, arg) { can.require(["https://shylinux.com/page/index.css"]) @@ -56,7 +58,7 @@ Volcanos("chrome", { }, sub._legend.onclick() sub.run = function(event, cmds, cb) { - can.run(event, ["action", "command", "run", meta.index].concat(cmds), cb) + can.run(event, [ctx.ACTION, ctx.COMMAND, cli.RUN, meta.index].concat(cmds), cb) } }, document.body) }, @@ -68,10 +70,10 @@ Volcanos("chrome", { }}) }) - can.run = function(event, cmds, cb) { var msg = can.request(event); msg.detail = ["page"].concat(cmds) + can.run = function(event, cmds, cb) { var msg = can.request(event, {hostname: location.hostname}); msg.detail = ["page"].concat(cmds) chrome.runtime.sendMessage(msg, function(res) { can.base.isFunc(cb) && cb(msg.Copy(res)) }) } - can.run({}, ["action", "command", "get"], function(msg) { + can.run({}, [ctx.ACTION, ctx.COMMAND, "get"], function(msg) { msg.result && msg.result[0] && can.field(can, msg, msg.result) }) })