1

私は、Javascript と JXA のどちらかについて、ここで夕食を食べるのが初めてなので、愚かな質問をした場合はご容赦ください。しかし、私は JXA を使用して強調表示されたテキストから文字列を取得する方法を見つけようとしています - 自動化のための JavaScript、Javascript は Yosemite 以来 Automator で認識できるため、これらで何かを動作させることができると思いました: 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 でwindoworを使用documentして 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

これは、Web ブラウザー内に埋め込まれた JavaScript にのみ適用されます。JXA はスタンドアロンの JS インタープリターであり、Web ページや 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 で Apple イベントを有効にする必要があります… http://osxdaily.com/2011/11/03/enable-the-develop-menu-in-safari/

別のアプリケーションから選択したテキストが必要な場合、コードは大きく異なる可能性があります。

于 2016-06-17T16:27:22.673 に答える