2017-12-08 1 views
2

Wie der Titel schon sagt, ich einen Apfel-Skript, das tut:in Tab 2 von Frontfenstern zurückgibt bekam Klemme einen Fehler: Kann nicht Tab 2 von Fenstern Update 1. (-1728), da High Sierra bekommt

in tab 2 of front window 

, die verwendet zu funktionieren, aber da die High Sierra kehrt Upgrade:

Terminal got an error: Can’t get tab 2 of window 1. (-1728) 

die zu errAENoSuchObject entspricht ich keine Dokumentation um diese geändert haben, finden können - ist das ein Fehler? Gibt es einen neuen oder besseren Weg, dies zu tun?

Antwort

3

Die Objekthierarchie hat sich leicht geändert. Jede Registerkarte wird in AppleScript als Registerkarte 1 verwiesen, die zu einem eindeutigen übergeordneten Fenster Objekt gehört.

also vorher, wenn es drei Registerkarten in einem Fenster geöffnet waren, konnten wir sie als Tab 1, Tab 2 und Registerkarte 3 von Fenster 1 beziehen. Jetzt haben wir Tab 1 von Fenster 1, Registerkarte 1 von Fenster 2 und Registerkarte 1 von Fenster 3.

Ich habe die bequemste und zuverlässigste Weg gefunden eine bestimmte Registerkarte Ziel ist es, das Fenster Objekt zu identifizieren, die die Registerkarte Objekt mit einem bestimmten tty Eigenschaftswert enthält. Ich verwende einen Befehl, der etwa wie folgt aussieht:

tell application "Terminal" 
     get the id of the first window ¬ 
      whose first tab's tty contains "003" 

     set w to result 
     close window id w 
    end tell 

Wenn Sie ein etwas klareres Bild der Dinge zu bekommen, führen Sie dies:

tell application “Terminal” to ¬ 
     get every tab of every window 

und diese:

tell application “Terminal” to ¬ 
     get properties of every window 

und dies:

tell application “Terminal” to ¬ 
     get properties of tab 1 of every window 
+0

Schöne investigative Arbeit! Als ich meinen jetzt gelöschten Kommentar darüber veröffentlichte, dass es möglicherweise ein Fehler ist, hatte ich noch keine Zeit, es zu untersuchen. +1 – user3439894

+0

Danke das funktioniert! Es erscheint mir total seltsam, dass sich das ändern würde. Irgendeine Idee von der Begründung dahinter? – db579

+0

Einverstanden - bizarr. Sie können also immer noch Syntax wie "do script" cd api "in Tab 3 des Frontfensters" schreiben, aber es funktioniert nie in High Sierra, da das Konzept von tab n nur dort existiert, wo n == 1? – StephenT