Also habe ich mich vor einiger Zeit entschieden, Safari ohne Flash zu installieren. Es war wirklich großartig, Safari wirkt insgesamt viel stabiler und ich vermisse es kaum.
Aber hin und wieder stolpere ich über eine Seite, die Flash benötigt (hauptsächlich YouTube-Videos, was meiner Meinung nach kein Problem darstellen würde, da Google eigentlich alles auf HTML5 umstellen sollte), also habe ich für diese Fälle ein Appescript die ausgeführt wird, wenn sie durch einen Alfred-Workflow (mit einem Hotkey) ausgelöst wird. Das Skript ist als solches:
tell application "Safari"
set theURL to URL of current tab of window 1
end tell
tell application "Google Chrome"
if windows ≠ {} then
make new tab at the end of window 1 with properties {URL:theURL}
else
make new window
set URL of active tab to theURL
end if
activate
end tell
tell application "Safari"
close current tab of window 1
end tell
Dies läuft normalerweise perfekt, aber ich stoße auf ein seltsames Problem, wenn Chrome kein offenes Fenster im Hintergrund hat. In diesen Fällen öffnet Chrome ein neues (leeres) Fenster und das Skript stoppt genau dort. Die dritte Tell-Anweisung,
tell application "Safari"
close current tab of window 1
end tell
Wird nie ausgeführt und hinterlässt bei mir ein offenes Chromfenster und ein offenes Safari-Fenster. Erst nachdem ich den Hotkey ein zweites Mal drücke, nachdem das Chrome-Fenster bereits geöffnet ist, führt das Skript seinen Lauf aus und öffnet die Seite in Chrome / schließt den Tab in Safari.
Irgendwelche Ideen? Ich bin wirklich verwirrt darüber, dass die dritte Tell-Anweisung überhaupt nicht ausgeführt wird. Wenn das Chrome-Fenster leer geöffnet wird, aber der Safari-Tab immer noch geschlossen ist, würde ich vermuten, dass es sich um einen einfachen Fehler in der if/else-Anweisung handelt, aber die Tatsache, dass das Skript zu beenden scheint, verblüfft mich wirklich.
Nur weil Safari und Chrome laufen, bedeutet das nicht, dass sie ein Fenster geöffnet haben. Sie können entweder nach offenen Fenstern suchen, wie Mark betont, oder einfach den Befehl zum erneuten Öffnen ausgeben, der ein neues Fenster öffnet, wenn eines nicht vorhanden ist.
tell application "Google Chrome"
if not (exists window 1) then reopen
-- insert your code
end tell
tell application "Safari"
if not (exists document 1) then reopen
-- insert your code
end tell
BEARBEITEN
tell application "Safari"
if not (exists document 1) then return
set theURL to URL of current tab of window 1
close current tab of window 1
end tell
tell application "Google Chrome"
if not (exists window 1) then reopen
set URL of active tab of window 1 to theURL
end tell
Alfred schützt Sie möglicherweise vor einem Fehler, der auftritt, wenn Chrome ausgeführt wird, aber keine Fenster geöffnet sind.
Google Chrome hat einen Fehler erhalten: Aktiver Tab kann nicht auf "http....." gesetzt werden.
Ändere die Zeilen
make new window
set URL of active tab to theURL
Zu
set theWindow to make new window
set URL of active tab of theWindow to theURL
Sergej
Develop
->Open Page With
->Google Chrome
. Sie können Hotkey für diese Aktion in den Systemeinstellungen zuweisenCarlos