Seitendruck ohne UI (UserInterface)
Lipp Johann
- html
0 Sven Rautenberg0 MudGuard
0 Struppi
Bei meinem System W2K und IE 6.0 erscheint bei Aufruf der Funktion window.print() automatisch das UI zur Abfrage wieviele Seiten, Druckparameter, etc...
Um das UI zu umgehen habe ich mir aus dem Forumsarchiv untenstehendes Tool in die Seite eingebaut. Funktioniert prima, ausser ... Auf einem anderen Rechner kann man ebenfalls drucken, jedoch sobald das Druckericon unten in der Nachrichtenzeile verschwindet wird das auf der Seite eingebundene JAVA.class nicht mehr ausgedruckt. Wenn man den Druck sofort wiederholt stimmt der Ausdruck wieder. Es sieht so aus als ob ein Timeout vorliegt und de Druck des .class verhindert. Weiß da vielleicht wer einen Rat?
Und wieso wird mit window.print() überhaupt ein UI ausgeführt?
============================================================
<script language="JavaScript">
function Drucken()
{
window.setTimeout("",120);
if(document.layers) /* Abfrage auf Netscape 4 */
self.print();
if(document.all) /* Abfrage auf MSIE 4 */
{
self.focus();
var OLECMDID_PRINT = 6;
var OLECMDF_ENABLED = 1;
var OLECMDEXECOPT_DONTPROMPTUSER = 2;
var OLECMDEXECOPT_PROMPTUSER = 1;
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('afterEnd',WebBrowser);
WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER);
WebBrowser1.outerHTML = ''
}
}
</script>
Moin!
Und wieso wird mit window.print() überhaupt ein UI ausgeführt?
Das kann ich dir sehr gut sagen: Um dem Benutzer die Gelegenheit zu geben, eine Auswahl zu treffen. Beispielsweise, welcher Drucker benutzt werden soll. Oder ob die Seite im Querformat gedruckt werden soll.
Bedenke nämlich bitte eines: Andere User - andere Sitten. Es ist sehr wahrscheinlich, dass ein User mehr als einen Drucker zur Verfügung hat. Und gemäß Murphys Gesetz, das alles, was schiefgehen kann, auch schiefgehen wird, hat der User genau den Drucker als Standarddrucker gewählt, mit dem er _deine_ Seite _nicht_ drucken will - sei es, weil er nicht den A3-Farbdrucker für deine Seite benutzen will, oder weil er _ausdrücklich_ den A3-Farbdrucker benutzen möchte.
Querformat ist ein zweiter Punkt: Man kann mit CSS festlegen, ob die Seite im Hochformat oder Querformat ausgedruckt werden soll, aber der IE kapiert das leider nicht, er druckt immer im Hochformat. Also wird der User wählen wollen.
Mit anderen Worten: Dein Versuch, sofort loszudrucken, ist User-Verarsche erster Kajüte - der User ist es gewohnt, dass er beim Aufrufen von "Drucken" erstmal einen Auswahl-Dialog erhält. Dass Microsoft es über ein ActiveX dennoch gestattet, den Drucker fernzusteuern, reizt mich förmlich, auf diese Weise einfach mal hundert Seiten Ausdruck zu starten - irrtümlich natürlich... :)
- Sven Rautenberg
Hi,
Und wieso wird mit window.print() überhaupt ein UI ausgeführt?
Das kann ich dir sehr gut sagen: Um dem Benutzer die Gelegenheit zu geben, eine Auswahl zu treffen. Beispielsweise, welcher Drucker benutzt werden soll. Oder ob die Seite im Querformat gedruckt werden soll.
Insbesondere will der User auch wählen, ob die Seite überhaupt gedruckt werden soll.
cu,
Andreas
Bei meinem System W2K und IE 6.0 erscheint bei Aufruf der Funktion window.print() automatisch das UI zur Abfrage wieviele Seiten, Druckparameter, etc...
Um das UI zu umgehen habe ich mir aus dem Forumsarchiv untenstehendes Tool in die Seite eingebaut. Funktioniert prima, ausser ... Auf einem anderen Rechner kann man ebenfalls drucken, jedoch sobald das Druckericon unten in der Nachrichtenzeile verschwindet wird das auf der Seite eingebundene JAVA.class nicht mehr ausgedruckt. Wenn man den Druck sofort wiederholt stimmt der Ausdruck wieder. Es sieht so aus als ob ein Timeout vorliegt und de Druck des .class verhindert. Weiß da vielleicht wer einen Rat?
Und wieso wird mit window.print() überhaupt ein UI ausgeführt?============================================================
<script language="JavaScript">
function Drucken()
{
window.setTimeout("",120);
if(document.layers) /* Abfrage auf Netscape 4 */
self.print();
if(document.all) /* Abfrage auf MSIE 4 */
{
self.focus();
var OLECMDID_PRINT = 6;
var OLECMDF_ENABLED = 1;
var OLECMDEXECOPT_DONTPROMPTUSER = 2;
var OLECMDEXECOPT_PROMPTUSER = 1;
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('afterEnd',WebBrowser);
WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER);
WebBrowser1.outerHTML = ''
}
}
</script>
Das das zum Glück nur bei Browsern funktioniert, denen die Wünsche Benutzer der Software reichlich egal ist, weisst du ja. Darüber hinaus testest du ausschließlich auf 4'er Browser, das die Marktführer mittlerweile teilweise bei 7 angekommen sind, weisst du auch?
Aber für dein Problem ist das sowieso nicht von Belang, sowas sollte in einer Umgebung wie einem Internet Browser nicht funktionieren, eigentlich noch nicht mal in einer Anwendung (s. Svens Posting).
Struppi.