2014-11-06 42 views
7

打開新的打印對話框窗口,爲了打開打印對話框當前頁面,我們做一些事情,像這樣:不同的HTML內容

<a href="javascript:window.print()">Print</a> 

如何使當前網頁,將打開打印鏈接與實際頁面不同的上下文的對話框?在Chrome


打印對話框: enter image description here

回答

7

Print Dialog

周圍玩(和一些google搜索)後,我想出了this解決方案:

我添加了一個non-printable類到當前視圖和printable類可打印容器元素。在我的CSS,我用css media queries其中@media screen@media print狀態包含相應的顯示行爲:

@media screen { 
    .printable { display: none; } 
    .non-printable { display: block; } 
} 
@media print { 
    .printable { display: block; } 
    .non-printable { display: none; } 
} 

現在,我可以打印從我目前看來新的內容,而無需打開一個新標籤或改變我的觀點。

看看這個jsFiddlesupported browser的列表。

7

我不知道如果這實際上是一個回答你的問題,因爲你的問題有關於你的意思是什麼開放非常小的細節一個新窗口。

如果您在/ page/one上,並且想要打開鏈接/報告/頁面,並自動彈出打印對話框......則只需觸發加載事件中的window.print即可。

<body onload='window.print()'> 

如果你不想讓頁面一定要打開打印對話框,然後進行鏈接到新的頁面/report/page?print=1或東西的效果時,要打印,當你發現在URL觸發onload事件。

0

有一個很好的Javascript插件叫做PrintThis很容易實現這一點。

你只需要使用一個jQuery選擇和調用插件,例如:

$('selector').printThis(); 

https://github.com/jasonday/printThis

0

包含在一個div打印內容。像:

HTML:

<div id='printarea'> 
    <p>This is a sample text for printing purpose.</p> 
    <input type='button' id='btn' value='Print' onclick='printFunc();'> 
</div> 
<p>Do not print.</p> 

JQuery的:

function printFunc() { 
    var divToPrint = document.getElementById('printarea'); 
    var htmlToPrint = '' + 
     '<style type="text/css">' + 
     'table th, table td {' + 
     'border:1px solid #000;' + 
     'padding;0.5em;' + 
     '}' + 
     '</style>'; 
    htmlToPrint += divToPrint.outerHTML; 
    newWin = window.open(""); 
    newWin.document.write("<h3 align='center'>Print Page</h3>"); 
    newWin.document.write(htmlToPrint); 
    newWin.print(); 
    newWin.close(); 
    } 

它只是將打印打印div.Thanks