chrome网页自动化插件_Automation | 让网页在 Safari 和 Chrome 之间穿梭-编程知识网

使用 Safari 浏览网页的时候,需要保存到 Notion 中去,但是 Notion 网页剪藏插件只有 Chrome 上有;
使用 Chrome 浏览网页的时候,想用阅读模式来浏览,但是 Chrome 上一直没有合适的阅读模式插件在体验上可以超越 Safari 的阅读模式。

以上的情况你可能也遇到过,或者也有类似的需求,就是一键将当前打开的 Safari/Chrome 页面在 Chrome/Safari 中打开。

下面就让我们用自动化来一键实现这样的效果。

chrome网页自动化插件_Automation | 让网页在 Safari 和 Chrome 之间穿梭-编程知识网

  • JXA 代码下载
  • Keyboard Maestro 版下载
  • Automator 版下载

动作使用

该脚本没有其他的依赖,依靠 Mac 即可运行,所以你需要做的就是下载上方文件,运行即可。

如何给安装的服务设置快捷键

Automator 版安装之后将会出现在 Safari 以及 Chrome 菜单栏的服务中,但是每次使用的时候还需要点击好几次,所以我们需要赋予它快捷键,方法如下:

  1. 打开“系统偏好设置”
  2. 选择“键盘—快捷键”
  3. 在“服务”中找到刚刚安装的“浏览器穿梭”,点击右侧设置快捷键

简单使用的你看到这边就足够了,下载使用即可,下面是一些制作过程中的困难与思考,供自动化爱好者参考。

原理解析

原理也非常简单,先判断最前方的窗口是 Safari 还是 Chrome,获取当前页面链接,关闭当前页面,在另一浏览器中打开。

虽然原理非常简单,但是在实现的时候还是碰到了一些问题:

1. 如果当前浏览器没有窗口则无法通过 ACTIVATE() 开启新窗口

所以我们需要使用 app.windows.length 先判断浏览器目前的窗口数量,如果窗口数量是 0 的话,那么就使用 Safari: app.Document().make(); Chrome: app.Window().make() 来创建新窗口。

2. 使用 PUSH() 在 SAFARI 中打开新页面并不会自动切换到该页面

push() 在 Chrome 中会自动切换到最新打开的标签页,但是 Safari 中却不会,所以我们需要使用 app.windows[0].currentTab = tabs 来切换到刚刚打开的标签页。

3. 当 SAFARI 只剩下一个标签页的时候,菜单栏的“关闭标签页”按钮将无法点击

所以我们需要使用 enabled() 来判断菜单栏中“关闭标签页”按钮是否可以点击,如果返回的是 false,则点击“关闭窗口”。

4. JXA 如何模拟点击菜单栏按钮

可以参考该教程,

尾巴

本篇文章的标题由之前的 Keyboard Maestro(以下简称 KM)变成了 Automation,也是一个经过深思熟虑之后做出的转变。因为 KM 实在是一个过于小众的软件,尤其对于国内而言,更是如此,所以为了让自己的文章可以帮助到更多的人,接下来会从 KM 中跳脱出来,以 JXA(JavaScript for Automation)的方式呈现给各位。

JXA 相对于 KM,对于 Mac 自动化来说,显然是更具有普适性的。只需使用 Automator、Alfred、LaunchBar 等软件对于 JXA 的代码片段进行简单的“包装”即可为己所用。尤其是 Automator,作为 Mac 原生自带的自动化软件,无需支付任何额外的费用,并且经过简单的设置即可将 JXA 代码的功能与菜单栏的“服务”结合,在系统设置中设定快捷键调用。虽然配置步骤相对繁琐了一些,不过也基本上实现了与 KM 相同的效果。

虽然介绍的内容是以 JXA 为核心,但是因为 KM Trigger 强大的功能,KM 仍然是我自己采用的主要容器。接下来也会安排几篇文章给各位介绍如何使用 Alfred 和 Automator 作为 JXA 的容器。

为什么选择 JXA,而不是 APPLESCRIPT?

其一,对于 JavaScript(以下简称 JS)语言有一定了解,不过了解也真的非常有限,不过好在 JXA 对于编程语言的要求并非很高。AppleScript 对我来说相对陌生,虽说重新学习难度不大,但是毕竟还是需要花费时间。

其二,相对于 AppleScript 来说,JS 更加通用,现在各个平台上也纷纷推出了使用 JS 进行自动化的工具(如 iOS 的 JSBox),在 Mac 平台上自动化经验可以在一定程度上帮助我实现其他平台的自动化。

选择 JXA 所遇到的困难

其一,JXA 毕竟是 14 年随着 Yosemite 才发布的新功能,目前网络上大量针对 Mac 的自动化代码以及教程都是使用 AppleScript 编写的,所以在遇到难题的时候在网络上寻求帮助的难度会大一些。

其二,JXA 的文档非常不完善(不清楚 AppleScript 的情况如何),虽然 Script Editor.app 自带了一个文档库,但是方法、函数非常不全(也可能是我不会看),也并没有线上的文档库,遇到问题基本上只能参考别人已经写好的代码。

不过相信以 JS 语言的流程程度,未来肯定会有越来越多的 JXA 代码以及教程。


什么是 Keyboard Maestro?
Keyboard Maestro是 Mac 上一款非常强大的自动化软件,只要是操作上具有一定重复性的操作,理论上都可以通过在 KM 中多个动作(Action)的组合重现,可以大大提升工作效率,减少在重复性任务上花费时间。

微信公众号:@赛博格

博客:http://cybg.me