window.print无法在Firefox中运行

时间:2010-01-04 11:57:31

标签: javascript firefox printing

function CallPrint() {
        var prtContent = document.getElementById('<%= pnlDelete.ClientID %>');
        var winPrint = window.open('', '', 'left=0,top=0,width=800,height=600,toolbar=0,scrollbars=0,status=0');
        winPrint.document.write("<h3>Summary</h3><br />" + prtContent.innerHTML);
        winPrint.document.close();
        winPrint.focus();
        winPrint.print();
        winPrint.close();
    }

我需要打印div的内容。我使用上面的代码来做到这一点。它在IE中工作正常但在Firefox中没有任何作用。我在这里遗漏了一些需要在Firefox中完成的事情吗?

5 个答案:

答案 0 :(得分:2)

我没有打开没有任何URL的新窗口,而是在窗口中打开了这个页面,并通过window.opener对象从打开的窗口访问了pnlSummary的内容 -

function CallPrint() {
    var winPrint = window.open('Print.aspx', '', 'left=0,top=0,width=800,height=600,toolbar=0,scrollbars=0,status=0');
}

在Print.aspx页面上我使用了这个函数 -

function Print() {
    var prtContent = "<h3>Summary</h3>" + window.opener.document.getElementById('ctl00_cphContent_pnlSummary').innerHTML;
    document.getElementById("printDiv").innerHTML = prtContent;
    window.print();
    window.opener.focus();
    window.close(); }

并在body onload上调用它。

<body onload="Print();">
    <form id="form1" runat="server">
    <div id="printDiv">
    </div>
    </form>
</body>

This在IE和Firefox中都运行良好。

答案 1 :(得分:1)

嗯......在Firefox 3.5(Windows)上,你的代码似乎对我很好。 您的pnlDelete.ClientID可能有问题吗? 您的javascript代码在页面上呈现得很好吗?

无论如何,我建议你使用jQuery +打印插件,如this

答案 2 :(得分:1)

检查以确保您的面板有某些内容。我的猜测是prtContent未定义

试试这个:

function CallPrint() {
    var prtContent = document.getElementById('<%= pnlDelete.ClientID %>');

    if (prtContent) {
        var winPrint = window.open('', '', 'left=0,top=0,width=800,height=600,toolbar=0,scrollbars=0,status=0');
        winPrint.document.write("<h3>Summary</h3><br />" + prtContent.innerHTML);
        winPrint.document.close();
        winPrint.focus();
        winPrint.print();
        winPrint.close();
    }
    else {
        alert('No summary available for printing');
    }
}

答案 3 :(得分:1)

您可以使用JS打印机设置https://addons.mozilla.org/en-us/firefox/addon/js-print-setup/&#34;

这是Fire fox Depended addon最有用的事情在Firefox中的网络应用程序Kisok中选择打印机

为附加的打印机和本地打印机添加了一些示例,它可以帮助您在没有打印对话框的情况下进行构建。

&#13;
&#13;
function EB_Print(printType) {
	try{
		var printerType = printType; // type of the Print Code : network 
		// Default Printer Configuring
		var Default_printer = "Canon MG2500 series";
		
		/** local Printer configuring via Network
		 ** Config teh Local server use \\\\ to get \\ 
		 **/
		var Organizer_Printer = "\\\\network\\Canon LBP2900";
		
		jsPrintSetup.setPrinter(Default_printer);
		jsPrintSetup.setSilentPrint(true);// withoud dialog 
		
		/** alert(jsPrintSetup.getPrintersList()); // Debugger for the attached Printers list
		 	alert(jsPrintSetup.getPrinter());   // get the set printer Option
		**/
	// id network is selected It will print the page in network
		if(printerType == 'network'){
			jsPrintSetup.setPrinter(Organizer_Printer);
		}
		 jsPrintSetup.print(); // Print the page
		 
		
	}catch (e) {
		// TODO: handle exception
	}
	
}
&#13;
&#13;
&#13;

答案 4 :(得分:0)

你可以试试一个jquery插件......

http://plugins.jquery.com/project/PrintArea