2016-06-08 2 views
0

Ich habe ein Skript, das unter anderem das Browserfenster aufzeichnet, in dem es beim Start aktiviert wurde. Dinge passieren in der Mitte, und dann muss das Skript zum ursprünglichen Fenster und Tab, auf dem es aufgerufen wurde, zurückkehren.Wie bringe ich ein Safari-Fenster mithilfe einer Fenster-ID in AppleScript in den Vordergrund?

Problem ist, kann ein Benutzer das aktive Fenster oder Registerkarte während der Ausführung des Skripts ändern. Ich möchte zu dem Fenster und der Registerkarte zurückkehren, die beim Aufruf des Skripts verwendet wurden.

Hier ist, wie ich versuche (und Fehler), dies zu tun:

tell application "Safari" 
    if (id of front window) is not (windowID of browserInfo) 
     display dialog "Made it in the block!" 
     display dialog (get index of window 1) 
     display dialog (get index of window (windowID of browserInfo)) 
-- ... 

Die Dialoge sind alle für das Debuggen, natürlich. Jetzt ist browserInfo ein Objekt, dessen windowID -Eigenschaft dem Safari-Fenster entspricht, in dem das Skript aufgerufen wurde. Dies ist normalerweise etwas wie "889" oder "1195" oder eine andere Nummer.

Nun, was interessant ist, sind die ersten vier Zeilen richtig beim Simulieren eines Benutzers, der in einem Fenster gestartet und dann ein anderes aktiviert wurde. Die vierte Zeile gibt wie erwartet "1" zurück. Aber die fünfte Zeile gibt einen Fehler: Safari got an error: Can't get window 809. Invalid index.

Wie kann ich den Index eines Safari-Fensters, wenn alles, was ich verwenden kann, eine ID ist?

(Und ja, URL und Fenstertitel sind gute Dinge, aber sie sind außerhalb der Grenzen für meine Anwendung. Benutzer können mehrere Fenster mit der gleichen URL und Fenstertitel geöffnet haben. Also brauche ich die spezifische Fenster-ID.)

Antwort

2

ich glaube, das ist, was Sie wollen ...

on run 
    tell application "Safari" 
     set myID to id of window 1 
     set myTab to current tab of window 1 
    end tell 

    do shell script "sleep 8" -- simulates time where user may change tabs 

    tell application "Safari" 
     set index of window id myID to 1 
     set current tab of window 1 to myTab 
    end tell 
end run 
+0

Excellent! Das Stück, das mir fehlte, war das "id" nach dem Fenster, aber vor der Variable. Selbst wenn ich versuche, 'set index of window 'zu setzen, dessen ID (windowID von browserInfo)' ist, schnitt es nicht ab. – Rydash

Verwandte Themen