Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在窗口加载时使用JS打印html表_Javascript_Php_Html_Css_Printing - Fatal编程技术网

Javascript 在窗口加载时使用JS打印html表

Javascript 在窗口加载时使用JS打印html表,javascript,php,html,css,printing,Javascript,Php,Html,Css,Printing,我需要将表格元素的内容打印到POS收据打印机上,我是这样做的: <?php private function message(){ return '<!DOCTYPE html><html moznomarginboxes mozdisallowselectionprint><body style="padding:30px;">' .'<table id="print-area" style="height: 501px;

我需要将表格元素的内容打印到POS收据打印机上,我是这样做的:

    <?php
    private function message(){
    return '<!DOCTYPE html><html moznomarginboxes mozdisallowselectionprint><body style="padding:30px;">'
.'<table id="print-area" style="height: 501px; border:1px solid red;padding:1em;margin:0 0 1em" width="364" ><tr><td>example</td></tr></table></table>'
.'<p>&nbsp;</p></body> </html>'}
    ?>

我所做的是将PHP函数的返回传递给一个新函数。请忽略php函数的结构和逻辑,这些只是我如何做到这一点的一个例子,我知道这可能不是最好的方法,但我真正需要帮助的是JavaScript部分。为什么不打印并关闭新窗口

我只需要打印表格,并使其适合POS收据页面,而无需打印整个空白。。。。我已经尝试过这个版本的PrintReceipt函数,但是它在收据上打印了很多空白

    public function PrintReceipt($content) {

    echo"<!DOCTYPE html><script type='application/javascript'>
                    window.onload=function(){          
                        var myWindow = window.open('', 'MsgWindow', 'width=200,height=100');
                        myWindow.document.write('" . $content . "');
                        myWindow.print();
                        myWindow.close();              
                    }
    </script>";
}
公共函数打印收据($content){
回声“
window.onload=function(){
var myWindow=window.open(“”,'MsgWindow','width=200,height=100');
myWindow.document.write(“$content.”);
myWindow.print();
myWindow.close();
}
";
}

如果您没有使用
框架
声明以下行没有意义:

myWindow.frames['print_frame'].document.title = document.title; 
myWindow.document.getElementById('print-area').contentWindow.print();   
这意味着你在OP中的第二次尝试是正确的。如果有空的空间,那绝对是一个
css
问题。如果希望表格占据页面宽度的
100%
,请执行以下操作:

返回“示例”

而不是

返回“”
.“例子”

.

'}

我测试了你的js函数和OP中提供的代码…它在我的环境中正常工作…可能是其他地方出了问题。你必须发布更多的代码嗨,这是正确的答案!我可以推断它将在POS打印机上工作,就像它在普通打印机上工作一样。感谢@NishanthI测试您的js函数和OP中提供的代码的帮助。它在my env上的效果与预期一样(在OP中使用的第二个版本)…可能是其他地方的问题。你必须发布更多的代码that@NishanthMatha我在运行时收到此错误:TypeError:myWindow.frames.print\u frame未定义步骤4:5:29它只是打开新窗口,但未将其发送到打印机。我测试了第二版本的代码是,第二版本的代码(也称为旧版本)存在问题是不是当我尝试打印时,它只是在收据上打印一个大的空白,我希望表格适合收据纸张的大小…你似乎在使用框架..你能发布你的
print\u frame
代码吗