1

Suppose I have two open TextEdit files, and consequently two windows. How can I switch/activate windows programmatically with JXA?

At the moment I have this:

var text = Application("textEdit")
text.activate()
var file1_path = Path("/Users/..../text1.rtf")
var file2_path = Path("/Users/..../text2.rtf")

var doc1 = text.open(file1_path)
var doc2 = text.open(file2_path)

console.log("text1",text.windows["text1.rtf"].index()) //prints 2
console.log("text2",text.windows["text2.rtf"].index()) //prints 1

//the next row brings text1 window to front but doesn't activate it, 
//as a matter of fact the 3 buttons upper/left (close,minimize, full screen) are grey
text.windows["text1.rtf"].index = 1
Ferex
  • 553
  • 6
  • 22

1 Answers1

1

You can give this a go, which appears to work on High Sierra:

TextEdit=Application('TextEdit');
Sys=Application('System Events');

TextEdit.activate()

/* open files, etc. */

Sys.processes["TextEdit"].windows[1].actions['AXRaise'].perform();

And you can, of course, replace the index 1 with the name of the window, such as "text1.rtf".

CJK
  • 5,732
  • 1
  • 8
  • 26
  • Wonderful, I am very happy. Could you give me an extra bonus and tell me how could I get to it alone by reading docs and dictionary library? Many thanks – Ferex Sep 12 '19 at 20:48