因为 https://www.v2ex.com/t/258892 请求的动机开始写的,这两天用 Javascript 重写了一下(因此只支持 OS X Yosemite+)。目前实现以下功能:
具体说明请移步 Github
Github: https://github.com/dearrrfish/browser-switcher-alfredworkflow
Packal: http://packal.org/workflow/browser-switcher
1
allan888 2016-03-09 06:04:53 +08:00 1
bug 有点多的感觉,我反复 bss 几次,感觉有一半的概率会关掉当前的,但是没有打开另一个浏览器的新 tab
|
2
dearrrfish OP r#1 @allan888 感谢反馈,貌似是没有判断目标 Safari window 是不是浏览器。
|
3
allan888 2016-03-09 07:37:00 +08:00
@dearrrfish 修好了 at 一下我呗,这个真心挺有用的。
|
4
elviscai 2016-03-09 09:33:10 +08:00
赞赞赞!!!
再搞搞就可以卸载掉 PopClip 了——所以这个 Workflow 可以考虑更名为「 PopFred 」?:p |
5
dearrrfish OP r#3 @
@allan888 已更新,欢迎继续帮忙抓虫:P |
6
allan888 2016-03-09 10:33:03 +08:00
@dearrrfish 感觉好极了。
|
7
elviscai 2016-03-09 10:53:19 +08:00 1
报个 copy 的 bug :
在 Chrome 中进行 copy 时,拷贝出来的内容会带上前一条的剪贴板内容,如: http://www.packal.org/workflow/browser-switcher # 当前 Chrome Tab 的 URL Browser Switcher | Packal # 当前 Chrome Tab 的 Title http://v2ex.com/t/262063%23reply4%0AAlfred%20workflow%20-%20Browser%20Switcher%20-%20V2EX%0A # 上一条的剪贴板内容(不一定是上一个 copy 的操作) |
8
tmacshuai 2016-03-09 10:56:36 +08:00
不错,使用中。
|
10
atan 2016-03-09 11:08:48 +08:00 1
我这里好像不行:
[ERROR: alfred.workflow.action.script] [{"name":"switch","options":{"clone":false,"dedupe":false,"reverse":false,"clips":{}}}] main.js:0:7230: execution error: Error on line 1: TypeError: undefined is not a function (evaluating 'Object.assign(o,{from:i,to:a})') (0) |
11
dearrrfish OP |
12
elviscai 2016-03-09 13:34:16 +08:00
@dearrrfish 一个小小小 bug :
1. 剪贴板为空时,进行选中文字的 copy 操作,会出现如下状况——剪贴板历史中(在最终结果之前)会多一条「选中文字」的拷贝记录。 2. 剪贴板不为空时,先 bss 一下,然后马上进行选中文字的 copy 操作,也会出现上述状况。 3. 剪贴板不为空且不进行 bss 操作的话,不会出现该状况。 我用的剪贴板历史工具是 Unclutter 和 Alfred-Features-Clipboard 。 |
13
dearrrfish OP r#12 @elviscai
谢谢反馈,不知道你是在哪个当前 app 内进行拷贝操作? 关于「拷贝选中文字」这个操作,我是这样实现的: - 如果当前 app 是 Safari/Chrome, 会执行 Javascript 语句 `"" + getSelection()` 来获取选中文字,这种情况应该不会出现重复的拷贝记录。 - 其他 app, 因为没有通用的 standard interface 来判定是否有 selection ,会强制调用一次 `SystemEvents.keystroke()` 发送 `cmd + c` 来尝试获取可能存在的 selection (我猜这应该就是那次多余的拷贝记录)。之后会比较拷贝前后剪贴板内容是否变化来判断是否存在;如果存在,在从当前剪贴板获得选中拷贝之后,还会再进行一次 copy(backupClipboard) 来恢复之前的内容。之所以要恢复是因为,除了 bsc 之外, bss 和 bso 也会用到同样的方法来获取 selection ,而这两个 action 用户是不希望当前剪贴板内容被更改的,例如你选中带 link 的文字用 bso 打开而不需要复制。因此在这种情况下可能会有一些重复拷贝的历史记录。 看看以后能不能找到通用的获取选中文字而不需要通过剪贴板来中转的接口吧…… |
14
elviscai 2016-03-09 14:30:57 +08:00
@dearrrfish 忘记说了,上述状况在我的 Safari 9.0.3 (11601.4.4) 和 Chrome 49.0.2623.75 beta (64-bit) 里都重现惹……
|
15
dearrrfish OP r#14 @elviscai 那挺奇怪的,我清空剪贴板以后试了一下 Safari 和 Chrome ,并没有没有出现单独复制「选中文字」的记录。(没有 Unclutter ,只是从 alfred clipboard 里看)
|
16
elviscai 2016-03-09 15:30:34 +08:00
|