chrome网页自动化插件_Automation | 让网页在 Safari 和 Chrome 之间穿梭
发布日期:2022-02-04 01:43:57 浏览次数:26 分类:技术文章

本文共 2282 字,大约阅读时间需要 7 分钟。

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

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

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

babc90a3b44b26140442d08e66014794.gif
  • 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

转载地址:https://blog.csdn.net/weixin_39603908/article/details/110663908 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:一段看不懂的乱码字符_字符乱码的解读
下一篇:c++ string split_闲话Python之砍瓜切菜split()

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月21日 18时59分25秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java 幂取模_快速幂取模算法 2019-04-21
java build path jre_java-如何在安装了jre 7后为Jre 6设置路径? 2019-04-21
java上传下载源码_javaweb简单实现文件上传与下载源代码 2019-04-21
java socket udp 广播_1.Java 的屏幕广播(基于UDP),2.多线程下载器 2019-04-21
java控制热敏打印机的例子.rar_stm32控制热敏打印机 2019-04-21
java clone equals_(原)java中对象复制、==、equals 2021-06-24
java滚动字幕实训报告_Java实习报告 (7000字).doc 2021-06-24
php7 memcached.exe,PHP7 下安装 memcache 和 memcached 扩展 2021-06-24
计算机二级java技巧,计算机二级报java难考吗 2021-06-24
php foreach 数据库,php – 使用foreach将数据库检索的数据排列在HTML表中 2019-04-21
拉格朗日matlab编程例题,Matlab习题讲解.doc 2019-04-21
case是不是php语言关键字,PHP语言 switch 的一个注意点 2019-04-21
linux php mkdir失败,linux – mkdir错误:参数无效 2019-04-21
config.php渗透,phpMyAdmin 渗透利用总结 2019-04-21
java list 合并 重复的数据_Java ArrayList合并并删除重复数据3种方法 2019-04-21
android volley 上传图片 和参数,android - 使用android中的volley将图像上传到multipart中的服务器 - 堆栈内存溢出... 2019-04-21
android开发的取消清空按钮,Android开发实现带清空按钮的EditText示例 2019-04-21
android gp服务,ArcGIS Runtime SDK for Android开发之调用GP服务(异步调用) 2019-04-21
mysql整体会滚_滚mysql 2019-04-21
向mysql数据库中添加批量数据类型_使用JDBC在MySQL数据库中快速批量插入数据 2019-04-21