Ankündigung

Einklappen
Keine Ankündigung bisher.

Unterschiedliches Druckverhalten verschiedener Browser

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unterschiedliches Druckverhalten verschiedener Browser

    Hallo,

    habe folgenden Code:
    Code:
    function f_print_erstkontakt_alle_seiten(seite)
    	{
    	close();
    	var seiten=new Array();
    	seiten[1]="erstkontaktbogen.php?druckversion=1&alle_seiten=1";
    	seiten[2]="betreuende_einrichtungen.php?druckversion=1&alle_seiten=2";
    	seiten[3]="erstkontakt_behinderung.php?druckversion=1&alle_seiten=3";
    	seiten[4]="erstkontakt_epilepsie.php?druckversion=1&alle_seiten=4";
    	seiten[5]="erstkontakt_medikamente.php?druckversion=1&alle_seiten=5";
    	seiten[6]="erstkontakt_entwicklung.php?druckversion=1&alle_seiten=6";
    	seiten[7]="erstkontakt_bewegung.php?druckversion=1&alle_seiten=7";
    	seiten[8]="erstkontakt_spiel.php?druckversion=1&alle_seiten=8";
    	seiten[9]="erstkontakt_verhalten.php?druckversion=1&alle_seiten=9";
    	seiten[10]="erstkontakt_essen.php?druckversion=1&alle_seiten=10";
    	seiten[11]="erstkontakt_schlafen.php?druckversion=1&alle_seiten=11";
    	seiten[12]="erstkontakt_wuensche_familie.php?druckversion=1&alle_seiten=12";
    	
    	fenster1=window.open(seiten[seite],"_blank");
    	fenster1.print();
    	}
    Das Prinzip ist einfach - und funktioniert tadellos im Google Chrome. Es gibt einen mehrseitigen "Erstkontaktbogen" welcher die Angewohnheiten etc. von verschiedenen Kindern beschreibt. Die Funktion wird mit steigendem Wert aufgerufen, so dass die Seiten nacheinander geöffnet und gedruckt werden können.

    Bei Chrome funktioniert es so: der close() Befehl schliesst den zuvor geöffneten Tab, weiter unten wird ein neuer Tab geöffnet mit der neuen Seite und anschließend der Druckdialog.

    Enttäuschung bei Safari: der Befehl close() führt zu einer "Totalschließung", was unter close() steht wird gar nicht mehr ausgeführt und ich finde auch irgendwie nicht die richtige Stelle um das close() so zu plazieren, um ähnliches Verhalten wie weiter oben beschrieben zu bekommen. Wenn ich auf close() verzichte, geht es, aber ich bekomme eben jede Seite in einem neuen Tab.

    Opera ist noch lustiger - aus irgendeinem Grund wird der fenster1.print() oder auch einfaches print() ignoriert. self.print() gibt schließlich zumindest einen Druckdialog, aber (!) nicht so wie es sein soll - der self.print() Befehl wird irgendwie aufgerufen bevor das neue Fenster geöffnet wird, was bedeutet dass noch vor der ersten Seite die Seite gedruckt wird, aus welcher die ganze Funktion aufgerufen wird - und die muss nicht gedruckt werden. Die letzte Seite dagegen wird gar nicht mehr gedruckt, weil das Drucken ja stattgefunden hat bevor die Seite geöffnet wurde.

    Prinzipiell wäre ich ja gerne bereit hier den Code den jeweiligen Browsern anzupassen, finde aber für Safari und Opera irgendwie nicht die Lösung!

    Kann jemand helfen?

  • #2
    Ich würde das popup wegwerfen. Wenn du wenig mit Javascript zu tun haben möchstest, kannst du ein <form target="_blank"> verwenden, das beim submit ein neues Fenster (oder einen neuen Tab, je nach Browsereinstellung des Benutzers) öffnet. Über das Formular kannst du all deine Parameter mitgeben.

    Auf der sich öffnenden Seite hörst du auf den window load-Event und rufst print() auf.

    Wenn du das ein wenig eleganter haben willst, öffne die Seite in einem Dialog (iframe). Dafür kannst du bspw. jqueryui dialog verwenden.
    I like cooking my family and my pets.
    Use commas. Don't be a psycho.
    [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

    Kommentar


    • #3
      Danke für den Tipp mit dem Drucken window-load Event, das habe ich jetzt so gemacht und bin das unterschiedliche Druckverhalten der drei Browser Safari, Google Chrome und Opera los. Das Problem mit dem close() - Befehl habe ich jetzt so gelöst:

      Code:
      function browser()
      	{
      	if (navigator.userAgent.search("Chrome")>-1)
      		{
      		my_browser="Chrome";
      		}
      		else if (navigator.userAgent.search("Safari")>-1)
      		{
      		my_browser="Safari";	
      		}
      		else if (navigator.userAgent.search("Opera")>-1)
      		{
      		my_browser="Opera";	
      		}
      	return my_browser;
      	}
      
      function f_print_erstkontakt_alle_seiten(seite)
      	{
      	// Opera und Chrome
      	my_browser=browser();
      
      	if (my_browser!="Safari")
      		{
      		close();
      		}
      		
      	var seiten=new Array();
      	seiten[1]="erstkontaktbogen.php?druckversion=1&alle_seiten=1";
      	seiten[2]="betreuende_einrichtungen.php?druckversion=1&alle_seiten=2";
      	seiten[3]="erstkontakt_behinderung.php?druckversion=1&alle_seiten=3";
      	seiten[4]="erstkontakt_epilepsie.php?druckversion=1&alle_seiten=4";
      	seiten[5]="erstkontakt_medikamente.php?druckversion=1&alle_seiten=5";
      	seiten[6]="erstkontakt_entwicklung.php?druckversion=1&alle_seiten=6";
      	seiten[7]="erstkontakt_bewegung.php?druckversion=1&alle_seiten=7";
      	seiten[8]="erstkontakt_spiel.php?druckversion=1&alle_seiten=8";
      	seiten[9]="erstkontakt_verhalten.php?druckversion=1&alle_seiten=9";
      	seiten[10]="erstkontakt_essen.php?druckversion=1&alle_seiten=10";
      	seiten[11]="erstkontakt_schlafen.php?druckversion=1&alle_seiten=11";
      	seiten[12]="erstkontakt_wuensche_familie.php?druckversion=1&alle_seiten=12";
      	
      	fenster1=window.open(seiten[seite],"_blank");
      	
      	if (my_browser=="Safari") // Safari
      		{
      		close();
      		}
      	}
      Funktioniert. Danke!

      Kommentar

      Lädt...
      X