|
|||
![]()
n'Abend,
wie man aus einer HTML-Seite heraus eine Seite in einem neuen Fenster öffnet ist ja hinlänglich bekannt. Alternativ zu target="_blank" besteht ja auch die Möglichkeit, das Ganze mit JS zu realisieren, nämlich mit window.open(). Letzteres funktioniert jedoch nicht immer, vor allem bei neueren Browsern funktioniert window.open() nur noch dann, wenn man es direkt einen onClick-Event zuweist und so auch anruft. Mein Problem ist nun konkret Folgendes: Ich habe eine Web-Application, in der zu jedem Formular eine Druckversion abrufbar sein soll. Da diese Druckversion in Form eines PDF-Dokuments erzeugt wird, möchte ich das nur ungern in einem iFrame o.ä. anzeigen, sondern ein neues Fenster öffnen. Mache ich das jedoch direkt (also über einen normalen Link), so fehlen in der Druckversion die letzten Änderungen. Da ich eigentlich alle Funktionen über AJAX realisiert habe war meine Idee nun die, dass ich zunächst das Formular via AJAX speichere und anschließend die Druckversion in einem neuen Fenster aufrufe. Das funktioniert jedoch aufgrund der o.g. Einschränkungen nicht, denn window.open() wird ja erst im Callback des AJAX-Calls (wenn die Änderungen in die DB geschrieben wurden) aufgerufen und fällt damit unter die Browser-Restriktion des nicht direkten Klickens. Im Moment stecke ich daher tatsächlich komplett fest. Ich habe auch schon versucht, die Druckversion mit Hilfe von jQuery zu öffnen, indem ich einen Klick auf einen Link simuliere, das funktioniert jedoch nur mit entsprechend registrierten Events, nicht jedoch mit den "normalen" HTML-Attributen wie HREF und TARGET. Ich bin nun am Ende meiner Ideen, vielleicht findet sich ja hier noch jemand, dem eine Alternative einfällt. Ansonsten muss ich wohl oder übel doch auf eine iFrame-Lösung zurückgreifen... |
Sponsored Links |
|
|||
![]()
Wirst du so wohl nicht anders hinbekommen.
Du könntest die window.open auf den onclick des Drucklinks setzen. Die Zielurl bekommt dann den Ajax-Request, in dem du im Callcack dann z.b. wiederum eine Weiterleitung zur PDF setzen kannst. |
Sponsored Links |
|
|||
![]()
Also ich habe das so verstanden: Du hast da einen Link "Seite ausdrucken". Wenn man da drauf klickt, wird (mit Verzögerung) ein PDF erstellt, welches du jetzt in einem Popup anzeigen willst?
Ich weis jetzt nicht, ob du bei PDFs prüfen kannst, ob das Fenster geöffnet wurde, aber auf jeden Fall kannst du dem User nach erstellen das PDFs einen weiteren Link anbieten... Im Notfall ein Onclick auf die ganze Seite, so kann man es nicht verpassen. An sonsten musst du das PDF eben in ein Frame-basiertes Fenster laden. Wer Websiten ausdrucken will, muss einfach damit rechnen, dass er manuell ein Popup zulassen muss, das ist nichts neues. Kannnst dir ja mal angucken, wie ich auf meiner Homepage das ausdrucken gelöst habe (Menü --> Drucken - ist noch ein Prototyp ![]() |
|
|||
![]()
Das fürchte ich aktuell auch.
Zitat:
Zitat:
Mag sein, dass es nichts neues ist. Ist aber eine Barriere, die nicht jeder findet. Und tote Links, die nicht funktionieren, sind das schlimmste, was man in einer Web Application haben kann... |
|
|||
![]()
Also wenn man einen Link anklickt, öffnet sich doch das Popup, oder?
Auf jeden Fall mit target="_blank" - ist halt kein Fensterchen, aber was soll's? Ich dachte, das PDF stünde nicht sofort zur Verfügung und müsste nachträglich per Timer o.Ä. geöffnet werden. Und wie gesagt: Ich würde mal testen, ob man mit einer Abfrage, wie if (window.open(...)) nicht einfach testen kann, ob das Popup da ist, und wenn nicht eine entsprechende Meldung anzeigen. [EDIT:] Ja, acb1980 schreibt ausdrücklich, dass das PDF nicht sofort zur Verfügung steht. Also ich würde da verschiedene Möglichkeiten durchtesten: Erstmal window.open aufrufen, wenn das nicht geht, den Trick mit document.getElementsByTagName('a')[x].click() (natürlich in einem try..catch) wenn das auch nicht geht eben eine Lösung mit Frame einbauen, oder den User darauf aufmerksam machen. Wenn es probleme macht, zu testen, ob das fenster offen ist, einfach erstmal eine html-seite in das fenster laden, die per Javascript der ursprünglichen Seite mitteilt, dass das Fenster offen ist und die sich dann selbst auf das PDF neulädt (self.location.href = "Das PDF"). Ist etwas aufwändig, aber was anderes fällt mir nicht ein. Geändert von MitjaStachowiak (16.07.2013 um 15:32 Uhr) |
|
|||
![]()
- onclick-handler auf eine temporärer Seite setzen
- diese speichert in die Datenbank - danach wird eine Weiterleitung zum PDF ausgeführt Beispiel Code: 1. onClick-Handler (Beispielweise auf einem Forumlar) 2. Abfangen der Parameter und Absenden des Ajax-Requests 3. Ausgabe der PDF Natrürlich sollte das Ganze aus Sicherheitsgründen auf POST-Parameter umgemünzt werden. Die temporäre Seite muss also die Request-Parameter des Formulars serverseitig abgreifen. Gruß Geändert von vanDerb (16.07.2013 um 17:06 Uhr) |
|
|||
![]() Zitat:
Das ist mir vorgestern auch noch eingefallen – und genau so mache ich es jetzt auch. Wird kein PopUp geöffnet erscheint ein kleiner Hinweis in einem entsprechend gestalteten Div mit einem normalen Link und target="_blank". Da der Hinweis erst erscheint, wenn die Inhalte gespeichert wurden, kann das PDF ja dann sofort aufgerufen werden. |
![]() |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Javascript soll neues Fenster öffnen | Sunlion | Javascript & Ajax | 2 | 22.08.2009 18:47 |
Javascript soll neues Fenster öffnen | Sunlion | CSS | 0 | 22.08.2009 16:50 |
Mit JavaScript neues Fenster mit vordefiniertem Inhalt öffnen | lomtas | Javascript & Ajax | 16 | 04.02.2009 13:04 |
Input Image - Link im selben Fenster öffnen | Ares | (X)HTML | 2 | 16.10.2006 10:12 |
mit <input Button neues Fenster öffnen? | Angelwaffe | CSS | 10 | 16.03.2006 13:21 |