我有一个示例fiddle here,其中有一个打印预览按钮。单击该按钮,将打开一个新的弹出窗口,该窗口创建为,
function printpage() {
var data = '<table border="1" cellspacing="0"><tr><td colspan="4">Sample Report</td></tr>' + document.getElementsByTagName('table')[0].innerHTML + '</table>';
data += '<br/><button onclick="window.print()" class="noprint">Print the Report</button>';
data += '<style type="text/css" media="print"> .noprint {visibility: hidden;} </style>';
myWindow = window.open('', '', 'width=800,height=600');
myWindow.innerWidth = screen.width;
myWindow.innerHeight = screen.height;
myWindow.screenX = 0;
myWindow.screenY = 0;
myWindow.document.write(data);
myWindow.focus();
}
使用Google Chrome开发者工具查看来源时,我可以获得以下代码。
<html>
<head></head>
<body>
<table border="1" cellspacing="0"><tbody><tr><td colspan="4">Sample Report</td></tr>
</tbody>
<tbody>
<tr><th>Sl.No</th><th>Value 1</th><th>Value 2</th><th>Value 3</th></tr>
<tr><td>1</td><td>5</td><td>0</td><td>2</td></tr>
<tr><td>2</td><td>7</td><td>0</td><td>4</td></tr>
<tr><td>3</td><td>1</td><td>0</td><td>10</td></tr>
<tr><td>4</td><td>8</td><td>0</td><td>3</td></tr>
<tr><td>5</td><td>13</td><td>0</td><td>6</td></tr>
</tbody></table><br>
<button onclick="window.print()" class="noprint">Print the Report</button><style type="text/css" media="print"> .noprint {visibility: hidden;} </style>
</body>
</html>
是否可以在弹出窗口中添加一些额外的javascript / jquery代码?
答案 0 :(得分:1)
您可以将脚本添加到data
变量,如下所示:
var data = '<script>/* CODE */ <\/script>' +
'<table ...>' +
:
'<style...>';
字符串中的结尾script
标记必须以某种方式被破坏,因此它不会显示为文字</script>
。如果是,则在找到标记时脚本将中断。
此外,您需要注意,脚本字符串中的引号不会破坏字符串。使用"
s并在需要时使用反斜杠转义'
。
实际上有更优雅的方式来设置页面(或部分页面)的打印方式,您可以使用例如Media Queries或link(请参阅media
)单独的样式表打印样式。