In Javascript -neuen tab- öffnen

  • im Hauptfenster Kontextmenü erscheint mit dem Code der Eintrag "Send to Google Docs" - beim Klick darauf wird ein Dokument, PDF etc. automatisch bei GDocs gespeichert, allerdings öffnet sich dazu ein neues Fenster. (zu erkennen an window.open(..))

    ich habe es bis dato noch nicht geschafft eine objektreferenz zu finden die einen neuen tab öffnet. auch eine selbstgebastelte Funktion hab ich nicht hinbekommen.

    Hat jemand von euch eine Idee wie ich hier ein neues Tab öffnen kann?

  • suppppppppppppppppaa!!!! 1000000 mal danke!! :D

    eindlich funkt das.

    ABER: wies ausschaut hat google die http header für die übergabe geändert. vorher wurde das file korrekt hochgeladen und es passte. jetzt bekomm ich einen 404er.

    hab probiert mit live headers den neuen header auszulesen, aber auch mit dem neuen funktioniert nichts. ich bekomme zwar keinen 404er mehr, aber hochgeladen wird auch nichts.

    url voher:

    Code
    http://docs.google.com/?formsubmitted=true&action=updoc&uploadURL=

    url jetzt:

    Code
    https://docs.google.com/DocAction?action=updoc&uploadURL=

    echt klasse! jetzt funkt zwar das script aber google hat die methoden geändert.

    wäre echt super wenn vielleicht einer den hund findet der da begraben ist!

    als dank würde ich denjenigen auch als co-autor nennen 8)

  • also der code ansich hat ja schon funktioniert.

    alte version: seite öffnet in neuem fenster (wollte ich nicht)

    neue version: seite öffnet in neuem tab (funktioniert)


    ABER: offenbar hat Google den Header für die Übergabe des Files geändert.

    alter header:

    Code
    http://docs.google.com/?formsubmitted=true&action=updoc&uploadURL=

    mit dem alten header kommt jetzt ein Fehler 404 (egal ob ich in tab oder fenster öffne - hängt also nicht damit zusammen und hat wie gesagt schon funktioniert)

    neuer header:

    Code
    https://docs.google.com/DocAction?action=updoc&uploadURL=

    Mit dem neuen Header kommt kein Fehler, aber man wird nur zur Upload Seite geleitet und es wird nichts hochgeladen.

    kA was Google da noch verändert hat.

    Also:

    Funktionierender Code:

    aber darin enthalten ist der falsche Header!!

    Ich bin mir jetzt nicht mehr sicher, nachdem ich von

    Code
    window.open

    auf

    Code
    gBrowser.selectedTab

    gewechselt habe ob

    Code
    window.addEventListener

    noch stimmt. Vielleicht hängt es damit zusammen?!

  • Begrifflichkeit:
    Das ist kein "Header" das ist ein URL.
    http://de.wikipedia.org/wiki/Header
    http://de.wikipedia.org/wiki/Uniform_Resource_Locator

    Grundlegend mag es aber tatsächlich eine Protokoll- bzw. Headerfrage sein.

    Du versuchst via HTTP-GET den Google Dienst anzuweisen, dass er einen URL als Uploadziel verarbeiten soll. Vielleicht ging das früher mal, inzwischen hat Google wohl auf HTTP-POST ausschließlich umgestellt.

    Beim regulären POST-Reqest über das Formular werden folgende Datenfelder übertragen:
    security_token, formsubmitted, uploadedFile , uploadURL, DocName und saveChanges

    Inwieweit alle tatsächlich nötig sind, habe ich nicht im einzelnen geprüft. Um das Ganze aber innerhalb einer Erweiterung zum Laufen zu bringen, wirst du wohl selbst einen POST-Request senden müssen.
    Siehe dazu: https://developer.mozilla.org/en/XMLHttpRequest

    Sollte der security_token eine Anti-CSRF-Maßnahme sein, wirst du nicht umhin kommen dir den Token zuerst mit einem GET-Request von https://docs.google.com/DocAction?action=updoc&hl=en zu holen. Rausparsen, Request-Parameter zusammenbauen und absetzen. Das sollte dann klappen, auch im neuen Tab ;)

  • ... :?: oke dass is mir (noch) etwas zu hoch. hab mich bisher nicht mit POST beschäftigt. Ist ja auch etwas anspruchsvoller als GET.

    Du scheinst dich da ja professionell mit der Materie zu beschäftigen... *schüchternfrag* wärst du vielleicht bereit mir da etwas unter die arme zu greifen? bitte! du kannst dich auch gleich als Autor eintragen :D

    wär echt super von dir.

    ich lad das addon mal hier hoch: http://www.file-upload.net/download-13994…1.0-fx.xpi.html

  • Wieso wendest du dich nicht an den Autor der Erweiterung?
    https://addons.mozilla.org/en-US/firefox/addon/8552
    Inbesondere solltest du ohnehin mit ihm Rücksprache halten, falls du eine modifizierte Version veröffentlichen willst. Ich habe keine Lizenzbedingungen gesehen, aber die Höflichkeit gebietet es eigentlich den Autor zu kontaktieren.

  • hab ich doch schon längst gemacht. (einmal vor 2 Wochen und vor 5 Tagen nochmal) hab ihm auch den korrigierten code geschickt und ihn gleich auch aufgeklärt dass die GET Methode nicht mehr geht.

    hat sich mit keinem Wort gemeldet und auch auf kein Kommentar reagiert.

  • Ich habe mal ein Ubiquity Kommando aus der Problemstellung gemacht.
    http://boardraider-ubiquity-commands.googlecode.com/svn/trunk/gd-upload.html

    Den Quellcode kannst du dir hier anschauen:
    http://code.google.com/p/boardraider-…nk/gd-upload.js
    Den Code kannst du für deine modifizierte Erweiterung übernehmen oder als Anschauung verwenden. Ausdrücklich stelle ich dir die Nutzung außerhalb der GPL frei, soll dich bei deiner Erweiterung also nicht kümmern.

  • wow - danke! wie soll ich dich eintragen? als boardraider?

    edit: funktioniert tadellos - aber was mir gerade aufgefallen ist:


    bei dateien die z.b. "das ist ein test.doc" heißen (also leerzeichen haben) kommt folgender fehler: "Beim Herstellen der Verbindung mit ... ist ein Fehler aufgetreten"

    Man sieht auch in der URL dass er die Leerzeichen nicht verarbeiten kann.

  • Zitat

    wie soll ich dich eintragen? als boardraider?

    Brauchst du nicht.

    Zitat

    bei dateien die z.b. "das ist ein test.doc" heißen (also leerzeichen haben)

    Verwende encodeURI - ich bau es mal bei mir im Code ein, dann siehst du wo es hin muss.

  • Datei: http://www.google.at/search?hl=de&c…tnG=Suche&meta=

    die 2. von oben

    Danke nochmals für deine Mühe!

  • Das zweite Dokument von oben ist bei mir
    http://www.offenbach.de/stepone/data/d…1/00/XLTest.doc
    Da sind keine Leerzeichen enthalten.

    Der Code von oben kann nicht funktionieren, wenn du ihn so in der Erweiterung stehen hast. Du hast den Code des Ubiquity Kommandos nur kopiert, natürlich musst du die relevanten Teile extrahieren.

  • hatte ich ja auch - ging aber nicht. dann hab ich so umgeformt wie es jetzt ist und es ging.

    wie wär es denn richtig?

    bzgl. file: einfach bei google test.doc eingeben und dann kommt schon eines was passt.

  • Den Code des Ubiquity Kommandos habe ich überarbeitet. Sollte jetzt mit allen Dokumententypen und auch mit Leerzeichen bzw. %20-Kodierungen klarkommen.

    Trotzdem kann der Code in der Form nicht funktionieren bei dir. Die Funktion getToken wird nie aufgerufen. Ebenso müsstest du im Entwicklungsprofil Fehlermeldungen sehen können, da bspw. CmdUtils nicht definiert ist.

    Den Code des Kommandos musst du, wie erwähnt, anpassen. Also undefinierte (Ubiquity-spezifische) Aufrufe entfernen und ggf. durch die entsprechenden Äquivalente ersetzen.