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"}
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 list
Ansatzes. 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 with
Block 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).
msmafra