我在这里吃晚餐,无论是Javascript还是JXA,如果我提出一些愚蠢的问题,请原谅我。但我正试图找出一种方法,使用JXA - 自动化JavaScript从突出显示的文本中获取字符串,因为Yosemite可以在Automator中识别Javascript,我认为我可以使用这些工具:
window.getSelection
in:
function getSelectedText() {
if (window.getSelection) {
txt = window.getSelection();
} else if (window.document.getSelection) {
txt =window.document.getSelection();
} else if (window.document.selection) {
txt = window.document.selection.createRange().text;
}
return txt;
}
这段代码不是我的,有人贴了这个。但是我发现我不能在Automator中使用window
或document
来更改Mac OS,所以有人可以告诉我如何将这个Javascript代码转换为JXA,Automator可以理解?
非常感谢!
答案 0 :(得分:0)
不要这样做,它只适用于嵌入在Web浏览器中的JavaScript。 JXA是一个独立的JS解释器,完全不了解网页或DOM(坦率地说,对于Mac应用程序脚本也没有太多线索,顺便说一下)。
相反,使用Automator创建OS X Service,因为服务可以操作几乎所有OS X应用程序中的选定文本;不需要应用程序脚本。
答案 1 :(得分:0)
你需要混合JXA和Safari的javaScript ......
var Safari = Application("Safari") // get Safari
selection = Safari.doJavaScript("document.getSelection().toString()",{
in: Safari.windows[0].tabs[0] // assume frontmost window and tab
})
脚本在JXA中,但document.getSelection()。toString()是Safari的javaScript。
当然,您需要在Safari中启用Apple事件... http://osxdaily.com/2011/11/03/enable-the-develop-menu-in-safari/
如果您想要其他应用程序中的选定文本,则代码可能会有很大差异。
答案 2 :(得分:0)
通常,您可以使用系统事件应用程序复制并粘贴任何应用程序。
def count_stuff(id, filename):
return (some_numerical_calc(filename), size_of_file(filename))
for id in ids_list:
nums = 0
sizes = 0
for f in files_list:
num, size = count_stuff(id, f)
nums += num
sizes += sizes
result = { id: (nums, sizes) }
有关详细信息,请参阅: