• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JavaScript-Problem: Eigene Druckfunktion läuft nicht gescheit

Status
Für weitere Antworten geschlossen.

JensB

Neues Mitglied
Hallo Leute,

habe mal wieder ein Problem im täglichen HTMl-Kampf. Ich würde gerne meiner Homepage eine Druck-Funktion verpassen, so in diesem Stil:

Testseite

Die JS-Funktion printDocument() erstellt ein neues Fenster mit demselben Inhalt, ändert dann dessen Stylesheet-Angaben und dann soll dieses Fenster gedruckt werden. Aber es erscheint einfach ein zweites Fenster mit identischem Inhalt. Wieso? Die Stylesheet-Änderungen zeigen keinen Effekt.

Wo ist der Fehler?

Grüße
Jens

PS: Ich weiß, ich könne ein Print-Stylesheet einbinden, aber dann sieht man die Druckversion erst auf dem Papier, ich will, dass die vorher sichtbar ist.
 
Es gibt auch eine Druckvorschau im Browser, das brauchst du nicht alles neu erfinden, funktioniert schon.
 
Das stimmt, die gibt es. Aber ich würde gerne meine Lösung verwenden.

Das Hauptproblem ist ja: Warum funktioniert es nicht?
 
Ja, das stimmt, danke für den Hinweis. Aber unabhängig davon, selbst wenn ich alles mit getElementById mache, funktioniert es auch nicht.

Gruß
Jens
 
Das kann sein, aber ich habe es auch OHNE getestet, und nur mit getElementById, kein Unterschied.

Unter dem selben Link ist nun eine funktionierende Lösung zu finden, was sagst duso als HTMl-Guru dazu? Ist die so OK?
 
Mal abgesehen davon, dass ich den Sinn der Funktion nicht ganz zu verstehen scheine, weil der Browser sie ja schon bietet, funktioniert deine Version nicht, wenn der Besucher JavaScript deaktiviert hat. Ausserdem verwendest du ein Tabellenlayout, das ist in Zeiten von CSS nicht mehr angebracht und zudem auch falsch.
 
Was denn für ein Tabellenlayout? Ich mache doch alles mit <div>s?!

Hallo Jens,

Code:
<table id="Navigation"><tr>
 <td><b>Link 1</b></td>
 <td><a href="#">Link 2</a></td>
 <td><a href="#">Link 3</a></td>
 <td><a href="#">Link 4</a></td>
 <td><a href="#">Link 5</a></td>
 <td><a href="#">Link 6</a></td>
</tr></table>
Da wäre eine ungeordnete Liste die richtige Wahl...

Grüße
Bernhard
 
Wirklich? Das List-Style-Item entfernen, einen Background einstellen - ist das nicht zu viel "Zweckentfremdung"?

Diese Seite ein "Tabellenlayout" zu nennen halte ich aber für Übertrieben, das ist die einzige Tabelle die ich verwende.

Nur zum Verständnis: Ist es mit CSS nicht mehr erlaubt (oder "falsch") Tabellen als Designelemente einzusetzen? Oder nur unnötig?
 
Wirklich? Das List-Style-Item entfernen, einen Background einstellen - ist das nicht zu viel "Zweckentfremdung"?

Diese Seite ein "Tabellenlayout" zu nennen halte ich aber für Übertrieben, das ist die einzige Tabelle die ich verwende.

Nur zum Verständnis: Ist es mit CSS nicht mehr erlaubt (oder "falsch") Tabellen als Designelemente einzusetzen? Oder nur unnötig?

Hallo Jens,
HTML dient der semantischen Auszeichnung Deiner Inhalte, dabei ist die Darstellung im
Browser völlig egal.
CSS dient dazu, das Aussehen Deinen Wünschen anzupassen.

Stellt sich also die Frage: handelt es sich bei einer Auflistung von Navigationspunkten
eher um tabellarische Daten, oder eher um eine Auflistung? ;-)

Konkret zu Deiner Frage: Tabellen dürfen natürlich weiterhin verwendet werden!
Anders können tabellarische Daten gar nicht korrekt ausgezeichnet werden...

Grüße
Bernhard
 
Was denn für ein Tabellenlayout? Ich mache doch alles mit <div>s?!
Was kein Stück besser ist, als ein Tabellenlayout, denn Layout macht man weder mit <div>s, noch mit Tabellen, sondern einzig und alleine mit CSS. HTML dient nur der semantisch korrekten Auszeichnung deines Inhaltes.

Wirklich? Das List-Style-Item entfernen, einen Background einstellen - ist das nicht zu viel "Zweckentfremdung"?
Nein, es ist sogar richtig es so zu machen, denn ein Menü ist eine Auflistung von Links und da HTML ja nur für die Semantik deines Inhaltes zuständig ist, musst du es sogar als Liste auszeichnen.

Diese Seite ein "Tabellenlayout" zu nennen halte ich aber für Übertrieben, das ist die einzige Tabelle die ich verwende.
Ob es nur eine Tabelle ist, oder 30 macht keinen Unterschied. Tabellen sind nut für die Auszeichnung tabellarischer Daten, nicht fürs Layout und auch nicht für ein Menü.

Nur zum Verständnis: Ist es mit CSS nicht mehr erlaubt (oder "falsch") Tabellen als Designelemente einzusetzen? Oder nur unnötig?
Es ist falsch und unnötig. Denn mit CSS kannst du jedes HTML-Tag so formatieren, wie du es haben möchtest und HTML wieder für dafür nutzen, wofür es ursprünglich gedacht war.
 
@Bernhard: Deine Erklärung zu den Tabellen und Listen, dazu _Thors_ Ergänzungen haben mich überzeugt, dass eine Liste wahrscheinlich wirklich sinnvoller ist. Problem ist nur: Meine Seite besteht aus ca. 200 Unterseiten, die alle schon dieses Format haben... Das wird lange dauern, das zu ersetzen. Gibt es da Programme, die einem die Arbeit erleichtern? Ich schreibe meine HTMLs immer mit Windows Notepad, daher die Frage.

Was kein Stück besser ist, als ein Tabellenlayout, denn Layout macht man weder mit <div>s, noch mit Tabellen, sondern einzig und alleine mit CSS. HTML dient nur der semantisch korrekten Auszeichnung deines Inhaltes.
Das verstehe ich aber nicht: Wie soll ich denn sonst die Textabschnitte über ein Stylesheet formatieren und vor allem: positionieren und mit Grafiken ausstatten, wenn nicht über divs?

@crash: Ja, das würde gehen. Aber: Ich möchte, dass man sich auch die Druckversion direkt im Fenster ansehen kann, bevor man sie ausdruckt. Ich kannte da mal eine Seite, bei der das mit JavaScript ging, das fand ich persönlich recht schön, nur leider ist diese Seite seit ein paar Jahren offline...

Grüße
Jens
 
@Bernhard: Deine Erklärung zu den Tabellen und Listen, dazu _Thors_ Ergänzungen haben mich überzeugt, dass eine Liste wahrscheinlich wirklich sinnvoller ist. Problem ist nur: Meine Seite besteht aus ca. 200 Unterseiten, die alle schon dieses Format haben... Das wird lange dauern, das zu ersetzen. Gibt es da Programme, die einem die Arbeit erleichtern? Ich schreibe meine HTMLs immer mit Windows Notepad, daher die Frage.
Eclipse kann das mit der Suche, aber dafür müsste die Tabelle schon exakt gleich sein auf jeder Seite.

Wenn du so viele Unterseiten hast, solltest du mal über die Verwendung von PHP nachdenken, damit du dein Menü in den Unterseiten nur noch einbinden brauchst und es in einer externen Datei pflegen kannst, so würdest du dir jetzt die 200 Änderungen ersparen und bräuchtest nur eine Datei zu ändern.


Das verstehe ich aber nicht: Wie soll ich denn sonst die Textabschnitte über ein Stylesheet formatieren und vor allem: positionieren und mit Grafiken ausstatten, wenn nicht über divs?
CSS kann nicht nur auf <div>s angewendet werden, sondern auf jedes Element. Du kannst also auch die Liste direkt positionieren, ihr eine Hintergrundgrafik geben und den Rahmen in verschiedenen Farben darstellen, dafür brauchst du kein <div>. Textabsätze lassen sich ebenso direkt formatieren, ganz ohne div.
 
Hallo Jens,

@Bernhard: Deine Erklärung zu den Tabellen und Listen, dazu _Thors_ Ergänzungen haben mich überzeugt, dass eine Liste wahrscheinlich wirklich sinnvoller ist. Problem ist nur: Meine Seite besteht aus ca. 200 Unterseiten, die alle schon dieses Format haben... Das wird lange dauern, das zu ersetzen. Gibt es da Programme, die einem die Arbeit erleichtern? Ich schreibe meine HTMLs immer mit Windows Notepad, daher die Frage.

Da spielt doch die Liste und CSS seine Vorteile erst richtig aus: stell Dir mal vor,
Du willst eines Tages statt der horizontalen Navi eine Vertikale... im einen Fall
bastelst Du an 200 Seiten, im anderen nur an Deinem Stylesheet...

Lad Dir die Testversion vom Dreamweaver runter, der kann Suchen-Ersetzen
im gesamten Ordner...

_Thor_ schrieb:
Was kein Stück besser ist, als ein Tabellenlayout, denn Layout macht man weder mit <div>s, noch mit Tabellen, sondern einzig und alleine mit CSS. HTML dient nur der semantisch korrekten Auszeichnung deines Inhaltes.
Das verstehe ich aber nicht: Wie soll ich denn sonst die Textabschnitte über ein Stylesheet formatieren und vor allem: positionieren und mit Grafiken ausstatten, wenn nicht über divs?

Du kannst jedes Element formatieren, div dient nur zum Gruppieren mehrerer Elemente.

Grüße
Bernhard
 
Ja, PHP ist mittlerweile wirklich sinnvoller... Vor allem, weil ich dann eine Sprachauswahl und Druckfunktion und Suchfunktion etc. viel einfacher einbauen kann... Werde ich mich demnächst mal ranwagen.

Danke an alle für die erhellenden Beiträge :)

Gruß
Jens
 
Erstellt doch trotzdem ein Druck-Layout und setz es für deine Druckansicht statt auf media="print" auf media="all".
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben