forked from x/volcanos
opt chrome
This commit is contained in:
parent
39d51e92ee
commit
072a309443
2
frame.js
2
frame.js
@ -198,7 +198,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
},
|
},
|
||||||
_action: function(can, list, action, meta) { action = action||can._action, meta = meta||can.onaction
|
_action: function(can, list, action, meta) { action = action||can._action, meta = meta||can.onaction
|
||||||
can.core.List(list||can.onaction.list, function(item) { can.onappend.input(can, item == ""? /*空白*/ {type: html.SPACE}:
|
can.core.List(list||can.onaction.list, function(item) { can.onappend.input(can, item == ""? /*空白*/ {type: html.SPACE}:
|
||||||
can.base.isString(item)? /*按键*/ {type: html.BUTTON, value: item, onclick: function(event) {
|
can.base.isString(item)? /*按键*/ {type: html.BUTTON, value: can.user.trans(can, item), onclick: function(event) {
|
||||||
var cb = meta[item]||meta["_engine"]
|
var cb = meta[item]||meta["_engine"]
|
||||||
cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
|
cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
|
|||||||
return can.base.isFunc(cb) && (res = cb(one, index, array)) && res != undefined && res || one
|
return can.base.isFunc(cb) && (res = cb(one, index, array)) && res != undefined && res || one
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
Clear: function(key) { switch (key) {
|
Clear: function(key) { switch (key||ice.MSG_APPEND) {
|
||||||
case ice.MSG_APPEND:
|
case ice.MSG_APPEND:
|
||||||
case ice.MSG_OPTION:
|
case ice.MSG_OPTION:
|
||||||
can.core.List(msg[key], function(item) { delete(msg[item]) })
|
can.core.List(msg[key], function(item) { delete(msg[item]) })
|
||||||
|
@ -33,6 +33,12 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
|||||||
if (key.indexOf(ice.PT) > -1) { return [""]}
|
if (key.indexOf(ice.PT) > -1) { return [""]}
|
||||||
return can.page.Select(can, option, key? "textarea[name="+key+"],"+"input[name="+key+"],"+"select[name="+key+"]": ".args", cb)
|
return can.page.Select(can, option, key? "textarea[name="+key+"],"+"input[name="+key+"],"+"select[name="+key+"]": ".args", cb)
|
||||||
},
|
},
|
||||||
|
SelectAll: shy("选择节点", function(can, target, key, cb, interval, cbs) {
|
||||||
|
can.page.Select(can, target, html.IFRAME, function(item) {
|
||||||
|
can.page.SelectAll(can, item.contentWindow.document.body, key, cb, interval, cbs)
|
||||||
|
})
|
||||||
|
return can.core.List(target && target.querySelectorAll(key), cb, interval, cbs)
|
||||||
|
}),
|
||||||
Select: shy("选择节点", function(can, target, key, cb, interval, cbs) { if (key == ice.PT) { cb(target); return [] }
|
Select: shy("选择节点", function(can, target, key, cb, interval, cbs) { if (key == ice.PT) { cb(target); return [] }
|
||||||
return can.core.List(target && target.querySelectorAll(key), cb, interval, cbs)
|
return can.core.List(target && target.querySelectorAll(key), cb, interval, cbs)
|
||||||
}),
|
}),
|
||||||
@ -51,6 +57,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
|||||||
"height": true, "max-height": true, "min-height": true,
|
"height": true, "max-height": true, "min-height": true,
|
||||||
"left": true, "right": true, "top": true, "bottom": true,
|
"left": true, "right": true, "top": true, "bottom": true,
|
||||||
"margin-top": true, "margin-left": true,
|
"margin-top": true, "margin-left": true,
|
||||||
|
"font-size": true,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size[k] && v && (can.base.isNumber(v) || v.indexOf && v.indexOf("px") == -1)) {
|
if (size[k] && v && (can.base.isNumber(v) || v.indexOf && v.indexOf("px") == -1)) {
|
||||||
|
32
proto.js
32
proto.js
@ -1,17 +1,19 @@
|
|||||||
var kit = {
|
var kit = {
|
||||||
MDB_ID: "id",
|
MDB_ID: "id",
|
||||||
MDB_KEY: "key",
|
MDB_KEY: "key",
|
||||||
MDB_ZONE: "zone",
|
|
||||||
MDB_TIME: "time",
|
MDB_TIME: "time",
|
||||||
|
MDB_ZONE: "zone",
|
||||||
MDB_TYPE: "type",
|
MDB_TYPE: "type",
|
||||||
MDB_NAME: "name",
|
MDB_NAME: "name",
|
||||||
MDB_TEXT: "text",
|
MDB_TEXT: "text",
|
||||||
MDB_HELP: "help",
|
|
||||||
|
|
||||||
MDB_LINK: "link",
|
MDB_INDEX: "index",
|
||||||
MDB_VALUE: "value",
|
MDB_VALUE: "value",
|
||||||
MDB_COUNT: "count",
|
MDB_COUNT: "count",
|
||||||
MDB_INDEX: "index",
|
|
||||||
|
MDB_LINK: "link",
|
||||||
|
MDB_HELP: "help",
|
||||||
|
|
||||||
MDB_ARGS: "args",
|
MDB_ARGS: "args",
|
||||||
|
|
||||||
MDB_HASH: "hash",
|
MDB_HASH: "hash",
|
||||||
@ -63,6 +65,7 @@ var ice = {
|
|||||||
|
|
||||||
var ctx = {
|
var ctx = {
|
||||||
CONTEXT: "context", COMMAND: "command", ACTION: "action", CONFIG: "config",
|
CONTEXT: "context", COMMAND: "command", ACTION: "action", CONFIG: "config",
|
||||||
|
INDEX: "index", ARGS: "args",
|
||||||
}
|
}
|
||||||
var cli = {
|
var cli = {
|
||||||
START: "start", STOP: "stop",
|
START: "start", STOP: "stop",
|
||||||
@ -88,6 +91,27 @@ var mdb = {
|
|||||||
MODIFY: "modify", SELECT: "select",
|
MODIFY: "modify", SELECT: "select",
|
||||||
|
|
||||||
META: "meta", HASH: "hash", LIST: "list",
|
META: "meta", HASH: "hash", LIST: "list",
|
||||||
|
|
||||||
|
ID: "id",
|
||||||
|
KEY: "key",
|
||||||
|
TIME: "time",
|
||||||
|
ZONE: "zone",
|
||||||
|
TYPE: "type",
|
||||||
|
NAME: "name",
|
||||||
|
TEXT: "text",
|
||||||
|
|
||||||
|
LINK: "link",
|
||||||
|
SCAN: "scan",
|
||||||
|
SHOW: "show",
|
||||||
|
HELP: "help",
|
||||||
|
|
||||||
|
SHORT: "short",
|
||||||
|
FIELD: "field",
|
||||||
|
COUNT: "count",
|
||||||
|
LIMIT: "limit",
|
||||||
|
INDEX: "index",
|
||||||
|
VALUE: "value",
|
||||||
|
EXPIRE: "expire",
|
||||||
}
|
}
|
||||||
var ssh = {
|
var ssh = {
|
||||||
SCRIPT: "script",
|
SCRIPT: "script",
|
||||||
|
@ -35,13 +35,14 @@ Volcanos({
|
|||||||
can.core.CallFunc([can, cmd], {can: can, msg: msg, arg: arg, cb: function() { msg.Reply() }})
|
can.core.CallFunc([can, cmd], {can: can, msg: msg, arg: arg, cb: function() { msg.Reply() }})
|
||||||
})
|
})
|
||||||
chrome.runtime.onMessage.addListener(function(req, sender, cb) {
|
chrome.runtime.onMessage.addListener(function(req, sender, cb) {
|
||||||
var msg = can.request({}, {tid: sender.tab.id, url: sender.url}); msg.__daemon = can.core.Keys(html.CHROME, sender.tab.id)
|
var msg = can.request({}, {tid: sender.tab.id, url: sender.url})
|
||||||
can.core.List(req.option, function(key) { msg.Option(key, req[key][0]) })
|
can.core.List(req.option, function(key) { msg.Option(key, req[key][0]) })
|
||||||
|
msg.__daemon = can.core.Keys(html.CHROME, sender.tab.id)
|
||||||
can.run(msg._event, req.detail||[], cb)
|
can.run(msg._event, req.detail||[], cb)
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
chrome.history.onVisited.addListener(function(item) {
|
chrome.history.onVisited.addListener(function(item) {
|
||||||
can.run({}, ["sync", kit.MDB_TYPE, "link", kit.MDB_NAME, item.title, kit.MDB_TEXT, item.url, "tid", item.id])
|
can.run({}, ["sync", mdb.TYPE, "link", mdb.NAME, item.title, mdb.LINK, item.url, "tid", item.id])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_motion: function(can) {
|
_motion: function(can) {
|
||||||
|
@ -62,6 +62,12 @@ fieldset.contexts input[type=text] {
|
|||||||
fieldset.contexts input[type=text]:hover {
|
fieldset.contexts input[type=text]:hover {
|
||||||
background-color:white;
|
background-color:white;
|
||||||
}
|
}
|
||||||
|
fieldset.contexts table.content a {
|
||||||
|
color:white;
|
||||||
|
}
|
||||||
|
fieldset.contexts table.content {
|
||||||
|
color:white;
|
||||||
|
}
|
||||||
fieldset.contexts div.code {
|
fieldset.contexts div.code {
|
||||||
background-color:#343a3445; color:white;
|
background-color:#343a3445; color:white;
|
||||||
font-size:14px; font-family:monospace;
|
font-size:14px; font-family:monospace;
|
||||||
|
@ -1,48 +1,54 @@
|
|||||||
setTimeout(function() { Volcanos({
|
setTimeout(function() { Volcanos({Option: function() { return [] },
|
||||||
spide: function(can, msg, arg) { var has = {}
|
spide: function(can, msg, _target) {
|
||||||
can.page.Select(can, document.body, html.VIDEO, function(item) {
|
if (!_target) {
|
||||||
if (!item.src || has[item.src]) { return } has[item.src] = true
|
msg.Push(mdb.TYPE, mdb.LINK)
|
||||||
var p = can.page.Select(can, document.body, "p.title")[0]
|
msg.Push(mdb.NAME, document.title)
|
||||||
var ls = item.src.split("?")
|
msg.Push(mdb.LINK, location.href)
|
||||||
var ls = ls[0].split(ice.PT)
|
}
|
||||||
|
|
||||||
msg.Push(kit.MDB_TIME, can.base.Time())
|
var has = {}; _target = _target||document.body
|
||||||
msg.Push(kit.MDB_TYPE, html.VIDEO)
|
can.page.Select(can, _target, html.IFRAME, function(item) {
|
||||||
msg.Push(kit.MDB_NAME, (p && p.innerText || html.VIDEO)+ice.PT+ls[ls.length-1])
|
if (!item.src || has[item.src]) { return } has[item.src] = true
|
||||||
msg.Push(kit.MDB_TEXT, item.src)
|
|
||||||
msg.Push(kit.MDB_LINK, item.src)
|
msg.Push(mdb.TYPE, html.IFRAME)
|
||||||
|
msg.Push(mdb.NAME, "")
|
||||||
|
msg.Push(mdb.LINK, item.src)
|
||||||
|
|
||||||
|
can.spide(can, msg, item.contentWindow.document.body)
|
||||||
|
})
|
||||||
|
can.page.Select(can, _target, html.VIDEO, function(item) {
|
||||||
|
if (!item.src || has[item.src]) { return } has[item.src] = true
|
||||||
|
var name = item.src.split("?")[0].split(ice.PT).pop()
|
||||||
|
var p = can.page.Select(can, _target, "p.title")[0]
|
||||||
|
|
||||||
|
msg.Push(mdb.TYPE, html.VIDEO)
|
||||||
|
msg.Push(mdb.NAME, (p && p.innerText || html.VIDEO)+ice.PT+name)
|
||||||
|
msg.Push(mdb.LINK, item.src)
|
||||||
})
|
})
|
||||||
|
|
||||||
can.page.Select(can, document.body, html.IMG, function(item) {
|
can.page.Select(can, _target, html.IMG, function(item) {
|
||||||
if (!item.src || has[item.src]) { return } has[item.src] = true
|
if (!item.src || has[item.src]) { return } has[item.src] = true
|
||||||
var ls = item.src.split("?")
|
var name = item.src.split("?")[0].split(ice.PS).pop()
|
||||||
var ls = ls[0].split(ice.PS)
|
|
||||||
|
|
||||||
msg.Push(kit.MDB_TIME, can.base.Time())
|
msg.Push(mdb.TYPE, html.IMG)
|
||||||
msg.Push(kit.MDB_TYPE, html.IMG)
|
|
||||||
if (item.src.indexOf("data:image") == 0) {
|
if (item.src.indexOf("data:image") == 0) {
|
||||||
msg.Push(kit.MDB_NAME, item.src.slice(item.src.length-20))
|
msg.Push(mdb.NAME, item.src.slice(item.src.length-20))
|
||||||
} else {
|
} else {
|
||||||
msg.Push(kit.MDB_NAME, ls[ls.length-1]||"image.jpg")
|
msg.Push(mdb.NAME, name||"image.jpg")
|
||||||
}
|
}
|
||||||
msg.Push(kit.MDB_TEXT, item.src)
|
msg.Push(mdb.LINK, item.src)
|
||||||
msg.Push(kit.MDB_LINK, item.src)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
change: function(can, msg, arg) {
|
change: function(can, msg, arg) {
|
||||||
if (arg.length > 1) {
|
arg.length > 1 && can.page.Modify(can, arg[0], can.base.Obj(arg[1]))
|
||||||
can.page.Modify(can, arg[0], can.base.Obj(arg[1]))
|
arg.length > 0 && can.page.Select(can, document.body, arg[0], function(item) {
|
||||||
}
|
msg.Push(mdb.TEXT, item.outerHTML)
|
||||||
if (arg.length > 0) {
|
})
|
||||||
can.page.Select(can, document.body, arg[0], function(item) {
|
|
||||||
msg.Push(kit.MDB_TEXT, item.outerHTML)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
order: function(can, msg, arg) {
|
order: function(can, msg, arg) {
|
||||||
var ui = can.user.input(event, can, ["index", "args", "selection", "left", "top"], function(event, button, data, list, args) {
|
var ui = can.user.input(event, can, [ctx.INDEX, ctx.ARGS, "selection", html.LEFT, html.TOP], function(event, button, data, list, args) {
|
||||||
can.run(event, [chat.FIELD, mdb.INSERT, kit.MDB_ZONE, location.host].concat(args), function(res) {
|
can.run(event, [chat.FIELD, mdb.INSERT, mdb.ZONE, location.host].concat(args), function(res) {
|
||||||
can.user.toastSuccess(can)
|
can.user.toastSuccess(can)
|
||||||
})
|
})
|
||||||
}); can.page.Modify(can, ui._target, {style: {left: 200, top: 200}})
|
}); can.page.Modify(can, ui._target, {style: {left: 200, top: 200}})
|
||||||
@ -65,9 +71,8 @@ setTimeout(function() { Volcanos({
|
|||||||
can.onmotion.toggle(can, sub._output)
|
can.onmotion.toggle(can, sub._output)
|
||||||
can.onmotion.toggle(can, sub._status)
|
can.onmotion.toggle(can, sub._status)
|
||||||
}, msg.Option("selection")||sub._legend.onclick()
|
}, msg.Option("selection")||sub._legend.onclick()
|
||||||
can.onmotion.float.auto(can, sub._target, chat.CARTE)
|
|
||||||
|
|
||||||
sub.run = function(event, cmds, cb) {
|
sub.run = function(event, cmds, cb) { if (msg.RunAction(event, can, cmds)) { return }
|
||||||
can.run(event, can.misc.concat([ctx.ACTION, ice.RUN, meta.index], cmds), cb)
|
can.run(event, can.misc.concat([ctx.ACTION, ice.RUN, meta.index], cmds), cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +81,7 @@ setTimeout(function() { Volcanos({
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
sub.onaction["保存参数"] = function(event) {
|
sub.onaction["保存参数"] = function(event) {
|
||||||
can.request(event, {zone: location.host, id: msg.Option(kit.MDB_ID)})
|
can.request(event, {zone: location.host, id: msg.Option(mdb.ID)})
|
||||||
can.run(event, [chat.FIELD, mdb.MODIFY, chat.TOP, sub._target.offsetTop])
|
can.run(event, [chat.FIELD, mdb.MODIFY, chat.TOP, sub._target.offsetTop])
|
||||||
can.run(event, [chat.FIELD, mdb.MODIFY, chat.LEFT, sub._target.offsetLeft])
|
can.run(event, [chat.FIELD, mdb.MODIFY, chat.LEFT, sub._target.offsetLeft])
|
||||||
can.run(event, [chat.FIELD, mdb.MODIFY, "args", JSON.stringify(sub.Input([], true))])
|
can.run(event, [chat.FIELD, mdb.MODIFY, "args", JSON.stringify(sub.Input([], true))])
|
||||||
@ -92,17 +97,14 @@ setTimeout(function() { Volcanos({
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
Option: function() { return [] },
|
|
||||||
|
|
||||||
_daemon: function(can) {
|
_daemon: function(can) {
|
||||||
chrome.extension.onMessage.addListener(function(req, sender, cb) { var msg = can.request(); msg.Copy(req); can.misc.Log(req.detail, msg)
|
chrome.extension.onMessage.addListener(function(req, sender, cb) { var msg = can.request(); msg.Copy(req); can.misc.Log(req.detail, msg)
|
||||||
can.core.CallFunc([can, req.detail[3]||"spide"], {can: can, msg: msg, arg: req.detail.slice(4), cb: function() {
|
can.core.CallFunc([can, req.detail[3]||"spide"], {can: can, msg: msg, cmds: req.detail.slice(4), arg: req.detail.slice(4), cb: function() {
|
||||||
delete(msg._event), delete(msg._can), cb(msg)
|
delete(msg._event), delete(msg._can), cb(msg)
|
||||||
}})
|
}})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_motion: function(can) {
|
_motion: function(can) { can.onmotion.float.auto(can, document.body)
|
||||||
can.onmotion.float.auto(can, document.body)
|
|
||||||
document.body.ondblclick = function(event) { can.onengine.signal(can, "onselection") }
|
document.body.ondblclick = function(event) { can.onengine.signal(can, "onselection") }
|
||||||
|
|
||||||
can.run({}, [ctx.ACTION, ctx.COMMAND], function(msg) {
|
can.run({}, [ctx.ACTION, ctx.COMMAND], function(msg) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user