externes Formular nach Aufruf abschicken
achilles
- javascript
Moin!
ich habe mir ein "Skript" gebastelt, welches bestimmte Sachen abfragt, sich daraus ne URL zusammenbastelt und diese Seite dann aufruft. Nachdem diese Seite (extern) aufgerufen wurde und geladen hat, soll automatisch das ausgefüllte Formular abgeschickt werden.
Es handelt sich um eine Art Link, den ich als Favorit speichern möchte, der dann geofox (HH ÖPNV) aufruft und mir meine Route ausgibt.
Wenn es hilfreich ist, hier der (unübersichtliche) code:
javascript:starttypeq=confirm('Kennen Sie die Start-Haltestelle?\nOK=JA\tAbbrechen=NEIN');javascript:if(starttypeq==true){startType='H';startName=prompt('Wie heißt die Start-Haltestelle?','Hauptbahnhof');startRegion='';}else{startType='A';startName=prompt('Wie heißt die Start-Straße+Hnr?','Mönckebergstraße 2');startRegion=prompt('Wie heißt der Start-Ort?','Hamburg');}javascript:desttypeq=confirm('Kennen Sie die Ziel-Haltestelle?\nOK=JA\tAbbrechen=NEIN');javascript:if(desttypeq==true){destType='H';destName=prompt('Wie heißt die Ziel-Haltestelle?','Hauptbahnhof');destRegion='';}else{destType='A';destName=prompt('Wie heißt die Ziel-Straße+Hnr?','Mönckebergstraße 2');destRegion=prompt('Wie heißt der Ziel-Ort?','Hamburg');}javascript:departureorarrivalq=confirm('Möchten Sie die Abfahrtszeit oder die Ankunftszeit bestimmen?\nOK=Abfahrt\t\tAbbrechen=Ankunft');javascript:if(departureorarrivalq==true){departureOrArrival=1;}else{departureOrArrival=0;}javascript:now=new Date();javascript:hours=now.getHours();javascript:minutes=now.getMinutes();javascript:day=now.getDate();javascript:month=now.getMonth()+1;javascript:year=now.getYear();javascript:if(hours<10){hours='0'+hours;};javascript:if(minutes<10){minutes='0'+minutes;};javascript:if(day<10){day='0'+day;};javascript:if(month<10){month='0'+month;};javascript:if(year<1900){year+=1900;};javascript:startTime=prompt('Um wieviel Uhr möchten Sie die Route planen?',hours+':'+minutes);javascript:startDate=prompt('An welchem Tag möchten Sie die Route planen?',day+'.'+month+'.'+year);javascript:location.href='http://www.geofox.de/base/initPersonalSchedule.do?STYLE=hbt&startType='+startType+'&startName='+startName+'&startRegion='+startRegion+'&destType='+destType+'&destName='+destName+'&destRegion='+destRegion+'&departureOrArrival='+departureOrArrival+'&startTime='+startTime+'&startDate='+startDate;
vielen dank für die Hilfe
Hallo auch,
ich würde dir gerne helfen, aber was ist deine Frage?
Formulare absenden kannst du mit http://de.selfhtml.org/javascript/objekte/forms.htm#submit@title=submit().
Mathias
ich lade eine Seite via location.href.
Diese Seite enhält ein Formular.
Dieses Formular möchte ich automatisch absenden.
Die Seite ist extern.
Hallo auch,
ich würde dir gerne helfen, aber was ist deine Frage?
Formulare absenden kannst du mit http://de.selfhtml.org/javascript/objekte/forms.htm#submit@title=submit().
Mathias
ich lade eine Seite via location.href.
Wenn ich das richtig sehe, endet dein Code an dieser Stelle.
Diese Seite enhält ein Formular.
Dieses Formular möchte ich automatisch absenden.
Das habe ich dir schon gezeigt.
Die Seite ist extern.
Das Problem ist wohl eher, dass dein Bookmarklet-Code nicht direkt Zugriff auf das geladene Dokument nach der location.href-Änderung hat. Du könntest versuchen, mit einem window.onload-Handler zu arbeiten und darin das Formular abzusenden:
window.onload = function () { document.forms.NAME.submit(); };
Aber vermutlich bezieht sich zu dem Zeitpunkt window noch auf das alte Dokument.
Ich fürchte, das lässt sich mit einem Bookmarklet nicht lösen. Zumindest nicht mit location.href, eher schon mit http://de.selfhtml.org/javascript/objekte/window.htm#open@title=window.open(), weil dir diese Methode das window-Objekt des neuen Fenster zurückgibt, du also problemlos einen load-Handler setzen kannst.
Mathias
Ich fürchte, das lässt sich mit einem Bookmarklet nicht lösen. Zumindest nicht mit location.href, eher schon mit http://de.selfhtml.org/javascript/objekte/window.htm#open@title=window.open(), weil dir diese Methode das window-Objekt des neuen Fenster zurückgibt, du also problemlos einen load-Handler setzen kannst.
Mathias
magst du mir da ein beispiel geben???
statt location.href='blub';
mach ich einfach
test=window.open('blub');
test.body.onload=function(){this.FORMNAME.submit();
test=window.open('blub');
Adresse im ersten Parameter, ein Name ohne Leer- und Sonderzeichen im zweiten.
test.body.onload=function(){this.FORMNAME.submit();
test.onload, das Ereignis passiert beim window-Objekt
Bei der Funktion fehlt die schließende geschweifte Klammer.
Dann muss das Formular natürlich einen Namen besitzen, damit du es über test.document.forms.FORMNAME ansprechen kannst.
Mathias
das Funktioniert leider nicht.
Ich habe kein Zugriff auf den body, weil noch nicht geladen... Schade :(
das Funktioniert leider nicht.
Was heißt »funktioniert nicht«?
Ich habe kein Zugriff auf den body, weil noch nicht geladen...
Das ganze Gehampel mit window.open und window.onload soll gerade dafür sorgen, dass du in der load-Handlerfunktion (und nur dort) Zugriff auf den body hast.
Warum hast du darauf keinen Zugriff? Bekommst du einen JavaScript-Fehler? Dann ist vermutlich die Same-Origin-Policy, eine Sicherheitsbeschränkung, schuld.
Mathias
Hallo,
mach das ganze doch mit PHP, da kannst du mit curl post und get anfragen stellen.
mfg, Flo
Ich habe das jetzt anders gelöst, nachdem ich die Struktur nochmals studiert habe.
Falls es jemand mal ausprobieren will oder sich dafür interessiert, hier der Link/BookmarkURL:
javascript:starttypeq=confirm('Kennen%20Sie%20die%20Start-Haltestelle?\nOK=JA\tAbbrechen=NEIN');javascript:if(starttypeq==true){startType='H';startName=prompt('Wie%20hei%C3%9Ft%20die%20Start-Haltestelle?','Lattenkamp');startRegion='';}else{startType='A';startName=prompt('Wie%20hei%C3%9Ft%20die%20Start-Stra%C3%9Fe+Hnr?','Vielohwisch%205');startRegion=prompt('Wie%20hei%C3%9Ft%20der%20Start-Ort?','Hamburg');}javascript:desttypeq=confirm('Kennen%20Sie%20die%20Ziel-Haltestelle?\nOK=JA\tAbbrechen=NEIN');javascript:if(desttypeq==true){destType='H';destName=prompt('Wie%20hei%C3%9Ft%20die%20Ziel-Haltestelle?','Lattenkamp');destRegion='';}else{destType='A';destName=prompt('Wie%20hei%C3%9Ft%20die%20Ziel-Stra%C3%9Fe+Hnr?','Vielohwisch%205');destRegion=prompt('Wie%20hei%C3%9Ft%20der%20Ziel-Ort?','Hamburg');}javascript:departureorarrivalq=confirm('M%C3%B6chten%20Sie%20die%20Abfahrtszeit%20oder%20die%20Ankunftszeit%20bestimmen?\nOK=Abfahrt\t\tAbbrechen=Ankunft');javascript:if(departureorarrivalq==true){departureOrArrival=1;}else{departureOrArrival=0;}javascript:now=new%20Date();javascript:hours=now.getHours();javascript:minutes=now.getMinutes();javascript:day=now.getDate();javascript:month=now.getMonth()+1;javascript:year=now.getYear();javascript:if(hours<10){hours='0'+hours;};javascript:if(minutes<10){minutes='0'+minutes;};javascript:if(day<10){day='0'+day;};javascript:if(month<10){month='0'+month;};javascript:if(year<1900){year+=1900;};javascript:startTime=prompt('Um%20wieviel%20Uhr%20m%C3%B6chten%20Sie%20die%20Route%20planen?',hours+':'+minutes);javascript:startDate=prompt('An%20welchem%20Tag%20m%C3%B6chten%20Sie%20die%20Route%20planen?',day+'.'+month+'.'+year);javascript:location.href='http://www.geofox.de/base/showPersonalSchedule.do?STYLE=hbt&startType='+startType+'&startName='+startName+'&startRegion='+startRegion+'&destType='+destType+'&destName='+destName+'&destRegion='+destRegion+'&departureOrArrival='+departureOrArrival+'&startTime='+startTime+'&startDate='+startDate+'&search=Suche%20starten';
Einfach in die Adresszeile, alle Fragen beantworten und die Route wird ausgegeben... tested in FF 3.0
Danke für die Hilfe, die Variante ist aber einfacher :D