Applescript-Reihe von Anwendungen

Ich habe ein Skript, das die aktive Registerkarte eines geöffneten Browsers neu lädt, aber ich möchte, dass es mit allen geöffneten Browsern funktioniert. Gibt es eine Möglichkeit, eine Liste/ein Array zu erstellen und in diesem Code zu verwenden?

Dieser Code funktioniert nur mit einem Browser:

if application "Safari" is running then
    tell application "Safari"
        activate
    end tell
    tell application "System Events"
        tell process "Safari"
            keystroke "r" using {command down}
        end tell
    end tell
end if

Ich habe versucht, ein Array/eine Liste zu erstellen, aber ich denke, das ist nicht der Weg, weil es nicht funktioniert:

set browsers to {"Google Chrome", "Firefox", "Opera", "Safari"}

Antworten (1)

Im Allgemeinen können Sie eine Zeichenfolge nicht durch eine Liste ersetzen und die Dinge ohne einige andere Änderungen zum Laufen bringen.

Eine gute Möglichkeit, dies zu umgehen, ist die Verwendung eines repeat with variable in listAnsatzes. Auf diese Weise können Sie jedes Element in einer Liste durchgehen und Ihren Code mit jedem Element in der Liste einzeln ausführen.
So wenden Sie das auf Ihren Code an:

set browsers to {"Google Chrome", "Firefox", "Opera", "Safari"}

repeat with browser in browsers
    if application browser is running then
        tell application browser
            activate
        end tell
        tell application "System Events"
            tell process browser
                keystroke "r" using {command down}
            end tell
        end tell
    end if
end repeat

Alles ist gleich, außer dass Ihr Code in einen repeat withBlock eingeschlossen ist und das "Safari"Literal durch ersetzt wird browser, ein Verweis auf den aktuellen Browser in der Liste der Browser (der Code wird einmal für jeden Browser in der Liste ausgeführt).

Aaaaah! wiederholen, das ist es. Danke schön. Ich habe Array/Liste ausprobiert, wusste aber nicht, wie man es loopt. Meine faule Suche hat es nicht gefunden.