1

我是这里的晚餐新手,无论是 Javascript 还是 JXA,如果我提出一些愚蠢的问题,请原谅我。但是我正在尝试找出一种方法来使用 JXA - JavaScript for Automation 从突出显示的文本中获取字符串,因为自从优胜美地以来,可以在 Automator 中识别 Javascript,我想我可以用这些来做一些事情: window.getSelection在:

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 中使用windowordocument来更改 Mac OS,所以有人可以告诉我如何将此 Javascript 代码转换为 Automator 可以理解的 JXA 吗?

非常感谢!

4

3 回答 3

2

通常,您可以使用系统事件应用程序复制和粘贴任何应用程序。

'use strict';

//--- GET A REF TO CURRENT APP WITH STD ADDITONS ---
var app = Application.currentApplication()
app.includeStandardAdditions = true

var seApp = Application('System Events')

//--- Set the Clipboard so we can test for no selection ---
app.setTheClipboardTo("[NONE]")

//--- Activate the App to COPY the Selection ---
var safariApp = Application("Safari")
safariApp.activate()
delay(0.2)	// adjust the delay as needed

//--- Issue the COPY Command ---
seApp.keystroke('c', { using: 'command down' }) // Press ⌘C 
delay(0.2)	// adjust the delay as needed

//--- Get the Text on the Clipboard ---
var clipStr = app.theClipboard()
console.log(clipStr)

//--- Display Alert if NO Selection was Made ---
if (clipStr === "[NONE]") {
	var msgStr = "NO Selection was made"
	console.log(msgStr)
	app.activate()
	app.displayAlert(msgStr)
}

有关更多信息,请参阅:

于 2016-06-17T20:04:36.247 回答
0

不要那样做,它只适用于嵌入在网络浏览器中的 JavaScript。JXA 是一个独立的 JS 解释器,它完全不了解网页或 DOM(坦率地说,也没有太多关于 Mac 应用程序脚本的线索,顺便说一句)。

相反,使用 Automator 创建OS X 服务,因为服务可以在几乎任何 OS X 应用程序中操作选定的文本;无需应用程序脚本。

于 2016-06-17T10:12:50.073 回答
0

你需要混合 JXA 和 Safari 的 javaScript……</p>

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 中启用苹果事件…… http://osxdaily.com/2011/11/03/enable-the-develop-menu-in-safari/

如果您想从另一个应用程序中选择文本,代码可能会非常不同。

于 2016-06-17T16:27:22.673 回答