Eine ziemlich schmutzige Methode, die aber funktioniert:
Code:
tell application "Safari"
--1.
activate
tell window 1
--2.
make new tab at the end of tabs
set current tab to last tab
tell current tab
--3.
set URL to "http://www.apfeltalk.de"
--4.
--trick zum checken, ob die page fertig geladen ist
--das sind zwei loops, weil apfeltalk erst complete meldet und dann nochmal
--loslädt. bei den pages, wo ich das bisher angewandt habe, reicht 1 loop
--i is tzur sicherheit da, um den loop auf jeden zu verlassen
set c to 0
log "entering 1st loop"
repeat until (do JavaScript "document.readyState") is not "complete" or c = 20
log "1st loop: " & (do JavaScript "document.readyState")
set c to c + 1
delay 0.2
end repeat
set c to 0
log "entering 2nd loop"
repeat until (do JavaScript "document.readyState") is "complete" or c = 30
log "2nd loop: " & (do JavaScript "document.readyState")
set c to c + 1
delay 0.2
end repeat
log "readyState is complete"
--5.
do JavaScript "window.document.forms[0].query.value='Einfache Aktionen im Browser ausführen';"
--6.
do JavaScript "window.document.forms[0].query.focus();"
--7.
tell application "System Events" to keystroke return
end tell
end tell
end tell
Dieses hier funktioniert jetzt nicht im Hintergrund, weil ich es jetzt nicht auf Anhieb hinbekommen habe, das Suchformular von Apfeltalk zu.. ähm... "submitten" und ich keine Lust hatte zu suchen warum. Sonst könnte es auch im Hintergrund funktionieren...
Kurz erklärt:
1. Safari aktivieren
2. Dem aktiven Fenster sagen, ein neues Tab am ende zu erstellen und dieses tab dann aktivieren*
3. Das tab auf Apfeltalk schicken*
4. Kleines loop, um zu checken, ob Apfeltalk fertig geladen hat.
5. Hier geht das interessante los. Da musst du einfach in den Page-Quellcode gucken, um zu gucken, ob das Formular einen Namen hat, wenn ja, kannst du es mit Namen ansprechen, wenn nicht, nimmst du halt den Index. Das Suchformular von Apfeltalk ist das erste Formular, also hat es Index 0. Das Textfeld hat einen Namen, "query", das kann man direkt so ansprechen. Wenn's keinen Namen hat kannst du es mit elements[index] ansprechen. Anstatt "query" könnte in dem Skript auch "elements[3]" stehen, weil das Textfeld das vierte(! index fängt bei 0 an) Element im Formular ist.
6. Weil ich keine Lust hatte herauszufinden, warum der click() Befehl (wäre gewesen. do JavaScript "window.document.forms[0].submit.click();", das ist der Button zum absenden der Anfrage) nicht ging, hab ich dem Textfeld des Suchformulars den Fokus gegeben und...
7. ...Safari eine Return-Taste geschickt.
2-4 sind übrigens nur so damit das Skript so funktioniert. Das wirst du evtl. anders machen müssen/anpassen/whatever.
Ich hoffe ich werde jetzt nicht gesteinigt. Die Methode ist wirklich schmutzig - das geht auch schöner. Ist aber effektiv.
