achilles: externes Formular nach Aufruf abschicken

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

  1. 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

    1. 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

      1. 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

        1. 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();

          1. 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

            1. das Funktioniert leider nicht.
              Ich habe kein Zugriff auf den body, weil noch nicht geladen... Schade :(

              1. 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

                1. Hallo,

                  mach das ganze doch mit PHP, da kannst du mit curl post und get anfragen stellen.

                  mfg, Flo

                  --
                  Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...
                  sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
                  *Zu dem de:> Ich benutze wegen IE im moment noch tabellen, weil dieser display:table noch nicht versteht. Ich werde aber, wenn IE 6 & IE 7 < 10% mein neues CSS-Layout einspielen...
  2. 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