Das folgende Applescript wartet darauf, dass eine Seite geladen wird, bevor es mit dem do javascript "document.body.innerText"
Teil des Skripts fortfährt. Es scheint wirklich gut zu funktionieren, bis auf eine Sache. Wenn Safari ausgeführt wird, aber derzeit kein Fenster geöffnet ist, führt die Ausführung dieses Skripts zu
Fehler "Safari hat einen Fehler: Verbindung ist ungültig." Nummer -609
Wenn ich dies jedoch ausführe, wenn Safari geschlossen ist, startet es Safari, geht zur angegebenen URL und führt nach dem Laden der Seite den Javascript-Teil aus. Ich verstehe nicht, warum eine Fehlermeldung angezeigt wird, wenn Safari ohne geöffnete Fenster ausgeführt wird.
tell application "Safari"
activate
if not (exists document 1) then reopen
tell front document
set URL to "http://example.com"
repeat until length of (source as text) is not 0
delay 0.5
end repeat
do javascript "document.body.innerText"
end tell
end tell
Der Fehler hebt immer den source as text
Teil des Skripts hervor. Ich habe versucht, length of (source as text) is not 0
zu zu wechseln repeat until name is "example domain"
, aber der Fehler tritt immer noch auf, wenn keine Fenster geöffnet sind und Safari läuft.
Sie müssen die Position der activate
Codezeile mit der Codezeile tauschen .if not (exists document 1) then reopen
Beispiel:
tell application "Safari"
if not (exists document 1) then reopen
activate
tell front document
set URL to "http://example.com"
repeat until length of (source as text) is not 0
delay 0.5
end repeat
do javascript "document.body.innerText"
end tell
end tell
Der folgende Screenshot des Skript-Editors wurde mit geöffnetem Safari und ohne geöffnete Fenster ausgeführt.
Zuerst musste ich „[√] Entwicklungsmenü in Menüleiste anzeigen“ (Safari > Einstellungen… > Erweitert) aktivieren und dann im Menü „Entwickeln“ auf „JavaScript von Apple-Ereignissen zulassen“ klicken. Als nächstes habe ich Ihren AppleScript- Code kopiert und in den Skript-Editor eingefügt und auf die Schaltfläche "Skript ausführen" geklickt , und es wurde ohne Fehler ausgeführt und der Text der Webseite http://example.com zurückgegeben. Safari wurde jedoch geschlossen, als ich das Skript zum ersten Mal ausführte.
Nachdem ich Ihre Frage erneut gelesen hatte, konnte ich den Fehler reproduzieren, indem ich Safari ohne geöffnete Fenster geöffnet hatte. Ich habe mir dann Ihren Code genauer angesehen und festgestellt, activate
dass es vorher war if not (exists document 1) then reopen
und activate
danach sein muss, um den Fehler zu vermeiden.
Das Zurücksetzen meiner Einstellungsdatei hat dies für mich behoben. Halten Sie dazu die Tasten Befehlstaste + Wahltaste + Strg + Umschalttaste gedrückt, während Sie die Indesign-Anwendung öffnen.
Indesign-Version 15.0.1 Mac OS Catalina 10.15.7
I0_ol
activate
Am falschen Ort zu sein, ist mir nie in den Sinn gekommen. Funktioniert jetzt perfekt. Vielen Dank für die Lösung einer weiteren meiner Apple-bezogenen Fragen.