如何使用JavaScript打印弹出窗口的内容?

5
我有一个网页,使用bPopUp弹出带有jQuery的模态窗口。
该窗口的内容正是我想要打印的内容(主页面上除此之外没有其他内容)。
我尝试将弹出窗口上的按钮链接到运行window.print();命令,但这只会打印整个页面,显示弹出窗口遮挡了页面的其余部分。
有人知道如何仅打印弹出窗口的内容而不包括其他内容吗?
谢谢

2
console.log($("#popup").html()) - Sulthan Allaudeen
@SulthanAllaudeen 抱歉我的无知,这会将内容发送到打印机吗?还是只发送到页面底部的“控制台”?谢谢。 - John T
jQuery html(): 获取匹配元素集合中第一个元素的 HTML 内容,或设置每个匹配元素的 HTML 内容。更多信息请参见:http://api.jquery.com/html/ - Yosvel Quintero
1个回答

7

示例HTML

<div id='DivIdToPrint'>
    <p>This is a Popup which needs to be printed.</p>
</div>

<div>
    <p>Do not print.</p>
</div>

<input type='button' id='btn' value='Print' onclick='printDiv();'>

Javascript

function printDiv() 
{
var divToPrint=document.getElementById('DivIdToPrint');
var newWin=window.open('','Print-Window');
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">'+divToPrint.innerHTML+'</body></html>');
newWin.document.close();
setTimeout(function(){newWin.close();},10);
}

给你的弹出框 div 加上一个 ID 并使用上面的示例。 您需要给它提供内联样式以完全打印弹出框。

谢谢您的回答。我已经成功让它工作了,虽然没有像您解释的那样格式化。我想知道是否有保留格式的方法?也许将相关的CSS文件加载到新窗口中或其他什么方式?再次感谢! - John T
如果我们能够加载CSS文件,就可以避免格式问题。我们需要检查一下。 - Sanket Tarodekar
好的,谢谢。如果有区别的话,我正在使用WordPress?再次感谢您的帮助 :-) - John T
@SulthanAllaudeen 我已接受此答案。显然,它并不能完全满足我的要求,因为它没有保留样式,但我会尝试自己解决这个问题。感谢你和Sanket的帮助。 :-) - John T
@JohnT 如果你认为你可以提供更好的答案,那么你应该发布自己的答案并接受它。这可能会帮助未来的读者 :) 欢迎。 - Sulthan Allaudeen
1
@ SulthanAllaudeen,请不要误解我的回复,认为我对帮助或答案没有感激之情。我希望我没有给人留下这样的印象(如果是,我真诚道歉)。我想表达的只是我希望有人能在你和Sanket提供的信息基础上构建出保留样式的方法。如果我找到了,我会将其添加到本主题中。再次感谢 :-) - John T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接