有没有一种方法可以检测当前OSX应用程序中所选/突出显示的文本,并将其存储在字符串中?
例如,如果我进入Safari并从随机网站中突出显示一个段落,然后启动我的应用程序,是否有一种方法可以获取我在Safari中突出显示的文本?
我没有听说过这个,但我不是专家,所以我不确定是否可能。
谢谢!
这个方法适用于使用 Command C 复制的任何应用程序,几乎所有应用都可以。下面的示例是在 Safari 中进行的。在运行之前,请确保用户已经在 Safari 中选择了文本,并且不要随后更改选项卡或窗口。如果用户关注其他应用程序也没问题。延迟非常重要。你可能可以缩短时间,但这取决于用户系统在运行时的状态,所以延迟越长,过程越稳定。
tell application "System Events"
tell application "Safari" to activate -- focus on Safari's current tab
delay 0.25 --critical
keystroke "c" using command down -- copy clipboard contents
delay 0.25 --critical
end tell
set highlightedText to the clipboard as Unicode text
display dialog highlightedText -- just to see the results, otherwise delete
set the clipboard to "" -- return clipboard to blank state
如果你只打算在Safari上做这个,那么以下是你最好的选择,通常不需要延迟。否则,与上述相同的注意事项。
tell application "Safari"
set highlightedText to (do JavaScript "(''+getSelection())" in document 1) as string
end tell
NSText
实例,然后从中获取高亮文本。 - David Skrundz