Hallo zusammen,
mit folgender Funktion soll lade ich Daten in ein iFrame und das soll dann gedruckt werden:
function printPage (sURL,callback) {
var oHiddFrame = document.createElement("iframe");
oHiddFrame.src = sURL;
oHiddFrame.style.visibility = "hidden";
oHiddFrame.style.position = "fixed";
oHiddFrame.style.right = "0";
oHiddFrame.style.bottom = "0";
document.body.appendChild(oHiddFrame);
oHiddFrame.contentWindow.onload = oHiddFrame.contentWindow.print;
oHiddFrame.contentWindow.onafterprint = function (callback) {
document.body.removeChild(oHiddFrame);
if(callback != undefined && typeof callback == 'function') callback();
};
}
Alles anzeigen
Als Callback übergebe ich
. Das Neuladen der Seite ist nötig, da sich mit anstoßen des Drucks Inhalte in der Session-Variable ändern sollen und neue Inhalte angezeigt werden sollen.
Einmal klappt es aber bei weiteren Versuchen kommt sporadisch folgende Meldung in der Konsole und der Druckdialog wird nicht aufgerufen: "NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMWindow.print]"
Die Meldung kommt nach keinem Erkennbaren Muster.
Die index.php:
<!DOCTYPE html>
<html lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function printPage (sURL,callback) {
var oHiddFrame = document.createElement("iframe");
oHiddFrame.src = sURL;
oHiddFrame.style.visibility = "visible";
oHiddFrame.style.position = "fixed";
oHiddFrame.style.right = "0";
oHiddFrame.style.bottom = "0";
document.body.appendChild(oHiddFrame);
oHiddFrame.contentWindow.onload = oHiddFrame.contentWindow.print;
oHiddFrame.contentWindow.onafterprint = function (callback) {
document.body.removeChild(oHiddFrame);
if(callback != undefined && typeof callback == 'function') callback();
};
}
$().ready(function(){
$("#btnPrint").on("click",function(){printPage("//localhost/cystore/scripts/php/testPrint.php",location.reload())});
$("#btnKill").on("click",function(){
});
});
</script>
<title>Test</title>
</head>
<body>
<form id="print" action="" name="nPrint">
<input type="button" id="btnPrint" title="Print" name="nPrint"/>
</form>
</body>
</html>
Alles anzeigen
Die Seite von der die Daten geladen werden (für Testzwecke minimalisiert):
Kann mir einer einen Tipp geben wie ich das Problem umgehen oder fixen kann?
Info: Server: XAMPP, PHP: 5.3.5, FF: v22.0
Vielen Dank
FlorianM