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

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

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

  • 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

chrome网页自动化插件_Automation | 让网页在 Safari 和 Chrome 之间穿梭相关推荐

  1. ubuntu20.04中安装划词翻译_教你轻松玩转免安装的网页翻译插件“有道网页翻译2.0”...

    大家在日常网页浏览中肯定多多少少都会碰到英文网站,这时候往往需要花费非常多的时候去自行理解,效率低下,又或者借助浏览器自带的翻译功能进行翻译,但又可能遇到翻译不准的情况. 现在这个问题可以解决啦!&q ...

  2. python自动访问网页_Python自动化 selenium 网页自动化-在访问一个网页时弹出的浏览器窗口,我该如何处理?...

    相信大家在使用selenium做网页自动化时,会遇到如下这样的一个场景: 在你使用get访问某一个网址时,会在页面中弹出如上图所示的弹出框. 首先想到是利用Alert类来处理它. 然而,很不幸,Ale ...

  3. python 浏览器自动化 弹窗控制_selenium 网页自动化 - 在访问一个网页时弹出的浏览器窗口,我该如何处理?...

    特别鸣谢 本文来自柠檬班-python 自动化第 25 期 铃铛同学 在做作业时遇到的问题,并提供的解决方案! 特别感谢铃铛同学.如果你是柠檬班的学生,热烈欢迎你来投稿技术文章哦! 前言 相信大家在使 ...

  4. chrome网页自动化插件_chrome网页注释插件

    问题背景:tensorflow中文官方文档无法做网页注释. 原本使用Hypothesis - Web & PDF Annotation diigo达到了500个注释的上限,继续做注释,每次注释 ...

  5. php网页视频播放插件下载_php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)...

    在web开发中经常会碰到一些简单的视频播放功能,但现在的视频格式不同,并且可以动态增加,所以我们就必须把视频保存到数据哦,好了下面我们来看我写的段简单的 php视频网页播放器代码吧. include ...

  6. 谷歌浏览器怎么打开flash Chrome启用flash插件技巧分享

    或许是由于flash多次曝出安全问题,苹果和谷歌先后对其进行限制,谷歌更是在新版Chrome浏览器中直接禁用了flash插件.而在访问某些必须使用flash插件的网站时,则需要手动开启相关的权限!那么 ...

  7. 一定要用Chrome吗?有了这些网页翻译插件,任意浏览器都能畅快玩耍

    Chrome现在可算是浏览器的带头大哥了,从上面的市场份额图可以看出差不多一半的市场都是它的,不愧是谷歌亲儿子.不过说老实话,Chrome自从退出中国市场后一直对国内用户不太友好.一个最简单的登录就能 ...

  8. Chrome网页翻译插件,实测超好用,万物皆可译

    Chrome浏览器 话不多说,给大家推荐一个比较靠谱的网页翻译插件: 可可翻译 Windows 和 mac均可使用 ,实测超好用! 各位如果可以墙,还是建议使用Chrome 应用商店直接下载哈 安装 ...

  9. chrome 网页截图插件

    chrome 网页截图插件 下载地址:点击下载 提取码:qqr9

  10. python模拟点击网页按钮_网页自动化开发(第一章)

    Web网页可以用许多工具进行开发,本文重点是介绍如何在python中使用Selenium实现网页自动化开发,主要先介绍Selenium的概念,开发环境搭建,selenium模拟用户打开浏览器并实现自动 ...

最新文章

  1. 《趣学Python编程》——2.3 使用变量
  2. [YTU]_2921( Shape系列-7)
  3. 计算机狐狸标志的程序,小狐狸等分线计算工具
  4. 天刀现在最新服务器,天涯明月刀8.21服务器更新公告
  5. Flex 学习笔记------FLACC Crossbridge
  6. C#之DotfuscatorCommunity
  7. 第一章、天天生鲜项目框架搭建
  8. IP 地址聚合 经典算法 已经过验证
  9. Qt 二维码文件传输工具
  10. python-office自动化办公:Word批量转PDF
  11. java查找文件路径_如何查找java路径?
  12. 什么是物联网?有哪些应用?终于有人讲明白了
  13. springboot整合redis报错org.springframework.beans.factory.UnsatisfiedDependencyException
  14. python中安装gensim包
  15. mini2440 linux驱动程序,mini2440的led的Linux驱动程序
  16. 计算机毕业设计ssm医院取药系统
  17. C++:计算对称正定 (SPD) 矩阵的逆矩阵(附完整源码)
  18. 找优秀项目很好的网站推荐
  19. google专利的脚步
  20. Mac 下Qt 设计师模式下菜单栏不显示问题

热门文章

  1. 【手势识别】基于matlab PCA+LDA手语检测识别【含Matlab源码 1551期】
  2. 【交通标志识别】基于matlab GUI矩匹配算法路标识别【含Matlab源码 1175期】
  3. 【物理应用】基于matlab GUI三相配电网实时仿真【含Matlab源码 1047期】
  4. 【心电信号】基于matlab心电信号去除基线漂移【含Matlab源码 955期】
  5. 【心电信号】基于matlab心电信号采集与处理【含Matlab源码 954期】
  6. # 畸变矫正_拒绝拍照边缘畸变 坚果Pro 3 Smartisan OS v7.2.0系统体验
  7. android view 画文字,【Android自定义View】绘图之文字篇(三)
  8. linux多进程通过中断实现,关于Linux内核源码中是如何区别进程上下文和中断上下文...
  9. ndimage.median_filter中值滤去除干扰信号
  10. 网件R8000路由器怎么云存储_给大姐姐换个“控制中心”——NETGEAR 网件 R7800 AC2600M 路由器 简晒_路由器...