// ==UserScript==
// @name MultiWindowPrint
// @namespace de.wikipedia.org
// @description Fügt auf der aktuellen Seite Schaltflächen für wiederholtes Drucken ein, wahlweise je eine am Beginn und am Ende der Seite oder/und eine an fester Position.
// @date 2011-09-29
// @author Geri Broser (http://de.wikipedia.org/wiki/Benutzer:Gerold_Broser)
// ==/UserScript==
// Anmerkung: Verwendet eine Seite Framesets (Ein Pfui! Eigentlich. ;-) werden die Schaltflächen in jedes Frame eingefügt.
// (Da jedes dieser eine mehr oder weniger unabhängige Seite mit eigenem Body ist.)
var anzahlDrucke = 2; // Eine Anzahl < 1 resultiert in einer Fehlermeldung, s.u.
var addTopAndBottomButtons = true; // Schaltflächen am Beginn und Ende der Seite einfügen.
var addFixedButton = true; // Schaltfläche an fester Position einfügen. Die Position kann im Code am Ende der Funktion addPrintButtons(...) angepasst werden.
var wartezeit = 500; // ...zwischen Druckvorgängen in Millisekunden; muss evtl. angepasst (erhöht) werden --> Versuch macht klug ;-)
// Notwendig, da sonst der Drucker u.U. ab dem 2. Mal Drucken von Windows als nicht bereit gemeldet wird --> geht ihm zu schnell
var fehlerdialogAnzeigen = false; // Wenn 'true' wird im Fehlerfall ein interaktiver Fehlerdialog angezeigt; wenn 'false' nicht.
// In die Javascript-Fehlerkonsole werden Meldungen immer geschrieben.
addPrintButtons( anzahlDrucke, addTopAndBottomButtons, addFixedButton, wartezeit, fehlerdialogAnzeigen );
function addPrintButtons( anzahlDrucke, addTopAndBottomButtons, addFixedButton, wartezeit, fehlerdialogAnzeigen )
{
if ( anzahlDrucke < 1 )
{
msg = "WindowPrint: Eine Druckanzahl kleiner als eins ist nicht sinnvoll."
console.log(msg);
alert(msg);
return;
}
var buttons = new Array(3);
for ( var b = 0; b < buttons.length; b++ )
{
buttons[b] = document.createElement('input');
buttons[b].value = "Diese Seite " + anzahlDrucke + "-mal drucken...";
buttons[b].type = "button";
buttons[b].setAttribute('onClick', "javascript: anzahl = " + anzahlDrucke + "; window.print(); for ( var p = 1; p < anzahl; p++ ) { window.setTimeout('window.print()', " + wartezeit + "); }");
}
var body = document.getElementsByTagName('body')[0];
if ( !body )
{
var msg = 'Die Schaltflächen "Diese Seite ' + anzahlDrucke + 'x drucken..." können auf dieser bzw. einer Seite nicht eingefügt werden.\n\n(Kein Body-Element verfügar. Mehr dazu kannst Du, unter Nennung der Seitenadresse, auf http://de.wikipedia.org/wiki/Benutzer_Diskussion:Gerold_Broser erfahren.)';
console.log(msg);
if ( fehlerdialogAnzeigen )
alert(msg);
}
else
{
if ( addTopAndBottomButtons )
{
body.insertBefore( buttons[0], document.evaluate('./*', body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue );
body.appendChild( buttons[1] );
}
if ( addFixedButton )
{
buttons[2].setAttribute('style', 'position:fixed; right:0px; top:0px;'); // Anpassen mit: right:0px; left:0px; top:0px; bottom:0px;
body.appendChild( buttons[2] );
}
}
} // addPrintButtons( ... )