tisfeng/Easydict

🚀 功能建议:改进提词的方式

qzi opened this issue · 33 comments

qzi commented

请先确认以下事项

  • 已仔细阅读了 README
  • issues 页面搜索过(包括已关闭的 issue),未发现类似功能建议
  • Easydict 已升级到最新版本

功能描述

https://scaledagileframework.com/built-In-quality/

这个页面选词查询会附带版权信息,所以查询的时候特别不方便,但是系统自带的那个查词却没有这个问题,所以我在猜想会不会是提词时使用的方法不一样,这不算一个bug,但是可以算功能改进吧

使用场景(可选)

在浏览的页面上查询选择的单词

实现方案(可选)

就是在页面选了啥词就查哪个词,不要附带版权信息去查询

Hello qzi, Thank you for your first issue contribution 🎉

不明白,有什么问题吗?

你是只有这个页面有问题,还是所有网页都不行?

image

qzi commented

不是,我知道有些网页有这种限制,但它是通过拦截快捷键 Cmd+C 实现,这不影响 Easydict 取词查询,无论自动取词,还是快捷键取词,我这里测试都是正常的。

ensure

© Scaled Agile, Inc.
Include this copyright notice with the copied content.

Read the FAQs on how to use SAFe content and trademarks here:
https://scaledagile.com/about/about-us/permissions-faq/
Explore Training at:
https://scaledagile.com/training/calendar/

image

qzi commented

原来如此,确实,苹果自家的 Safari 不支持 Auxiliary,所以目前在 Safari 上 Easydict 采用的是快捷键 Cmd+C 取词。

我稍后研究一下,看看有没有别的方式能绕过去。


(小声讨论一下,用 Chrome 不好吗 🥹,Safari 上好多类似问题 #41 (comment)

qzi commented

🫠

qzi commented

也是,我后面尝试一下吧。这问题有点难搞哦 😢

@tisfeng 我复现了
image

qzi commented

@tisfeng 我复现了
image

你试试chrome,edge,safari,我早上在Mac上实验了这个三个都有这个问题

就很奇怪,我本地在 Chrome 和 Edge 上使用都没有问题,Debug 显示它们俩都是原生支持 Auxiliary 取词,这种方式不会被网页事件 JS 篡改的。

麻烦提供一下你的测试环境:设备型号,系统版本,浏览器版本,以及复现问题详细操作步骤,如取词的具体类型(单击,双击,三击,Shift 等),方便的话,希望能录个视频,这样更容易看到问题所在。

qzi commented

captured video
https://app.screencast.com/zWguuSTg3h7z7

Mac M1,MacOS 13.3.1
image
image

了解了,你这个情况,可能和 issue #84 (comment) 类似,在我的这边工作正常,但不知道为什么在你电脑上 Auxiliary 取词失败,然后自动采取了模拟快捷键 Cmd+C 方式取词,然后就被网页事件拦截了,从你视频中一闪而过的那个搜索🔍小弹窗能看出来。

这个问题还不容易解决,不像 #84 加个白名单就行,得找到导致问题的原因。但目前在我电脑上无法复现。。

image

qzi commented

了解了,你这个情况,可能和 issue #84 (comment) 类似,在我的这边工作正常,但不知道为什么在你电脑上 Auxiliary 取词失败,然后自动采取了模拟快捷键 Cmd+C 方式取词,然后就被网页事件拦截了,从你视频中一闪而过的那个搜索🔍小弹窗能看出来。

这个问题还不容易解决,不像 #84 加个白名单就行,得找到导致问题的原因。但目前在我电脑上无法复现。。

image

复现了Safari也足够了

想了一下,起来好像也是。

但实际还是不一样的,Safari 是知道原因的,是它本身就不支持 Auxiliary,所以可以尝试采用 AppleScript 取词,而 Chrome 和 Edge 这些,理论上是支持 Auxiliary 取词,只是不知道为它们为什么在某些电脑上不工作。

取词方式: Auxiliary > AppleScript > 模拟快捷键

无论是性能还是用户体验上,Auxiliary 都是最优的,如果不能找出具体原因,直接用 AppleScript 肯定不是一个好的选择。更别说不同浏览器调用的 AppleScript 都不同,代码适配费心费力。

行吧,既然准备支持 Safari AppleScript 取词,那就把 Chrome 和 Edge 也都支持了吧 😔

这个我个人想可以参考 Bob 在设置里加一个选项:

取词方式

  1. 性能优先(全部使用 Auxiliary)
  2. 兼容性优先(对一些反馈上来的app使用模拟 Cmd+C / 全部使用 Cmd+C)

@tisfeng 我复现了
你试试chrome,edge,safari,我早上在Mac上实验了这个三个都有这个问题

我用 Safari 确实有这个问题,但是用 Arc (Chromium Engine Version 113.0.5672.63) 没有复现

我在 macOS 13.3.1(a)
image

最新 dev 已经改进了对浏览器的取词,现在如果 Safari 和 Chrome 使用 Auxiliary 取词失败,会尝试 AppleScipt 方式取词,这种取词效果基本和 Auxiliary 一致。

虽然新加的 AppleScipt 取词功能,理论上对所有的 Chrome 内核都适用,但目前 Chrome 浏览器白名单我只加了 Google Chrome 和 Microsoft Edge,如果后续有其他类型浏览器也有问题,可以参照添加。

这个白名单,只是一种过渡方法,后续会允许用户选择哪些应用可以在 Auxiliary 取词失败时启用模拟快捷键 Cmd+C 方式取词。

https://github.com/tisfeng/Easydict/blob/dev/Easydict/Feature/EventMonitor/EZEventMonitor.m#L461

qzi commented

孤军奋战ing

这个具体是指什么?

把设置openai key后查词功能也开放一下吧

qzi commented

搜了 issue 吗,你是要这个 #28 (comment)

qzi commented

请问这个具体是什么表现?是选择文本的高亮背景自动消失了? 我没遇到过这问题,如果可以复现,你录个视频,我查一下 🧐

但是你的软件会马上抹除我选择的高亮文字

你的问题都太简洁,太模糊了,我很难猜的 🥹

在哪个应用中?或哪个浏览器,哪个网页?选中的文本是输入框文本吗?抹除?

qzi commented

请问这个具体是什么表现?是选择文本的高亮背景自动消失了? 我没遇到过这问题,如果可以复现,你录个视频,我查一下 🧐

但是你的软件会马上抹除我选择的高亮文字

选中后高亮的文字被你的软件拦截,有时候并不需要查词,就只是想高亮突出一下也不行了,除非关掉你的软件
https://app.screencast.com/Ddwim67VTrQcE

看视频明白了,选中文本高亮消失问题,其实是这个网页自己搞得鬼,它检测到复制文本动作,就把高亮去掉了 😓

这些其实都是同一个问题,都是因为你当前使用的浏览器不支持 Auxiliary 取词,而这个网页又很奇葩对模拟快捷键取词进行了拦截限制。

这类问题将会在下个版本修复,下版本在浏览器 Auxiliary 取词失败时,尝试 AppleScipt 取词。

你好,新版本已修复该问题 https://github.com/tisfeng/Easydict/releases/tag/1.3.1

qzi commented

你好,新版本已修复该问题 https://github.com/tisfeng/Easydict/releases/tag/1.3.1

刚升级了1.3.1,在safari和edge上试了下还是一样有问题

https://scaledagileframework.com/portfolio-backlog/

看一下你浏览器是否允许了 JavaScript 事件,如果未授权,AppleScipt 取词失败,最后还是会模拟 Cmd+C

image image