使用Javascript打印Div并保留样式

时间:2011-01-11 09:30:01

标签: javascript jquery css

我正在尝试使用这个带有JQuery的javascript在我的应用程序中打印某个div:

function PrintContent()
{
w=window.open();
w.document.write($('#diary').html());
w.print();
w.close();
}

它在新选项卡中打开div,打开打印选项面板但CSS样式丢失。我有一个print.css,设置为media =“print”但是,我认为它显然没有在新标签中加载这个文件,即它只是加载div而不是CSS所在的标题。

知道如何解决这个问题吗?我的javascript并不那么强大。

谢谢!

2 个答案:

答案 0 :(得分:4)

请尝试使用此行:

w.document.write('<div id="diary">' + $('#diary').html() + '</div>');

您正在写出div的内部html 而不是实际的div标签。

上面的方法也会写出具有正确id的div标签。我只是将ID粘贴在那里,因为您可能会格式化div#diary而不是div

修改

此方法应保持样式。

function PrintContent()
{
    var e = document.createElement('div');
    e.id = 'diary';
    e.innerHTML = $('#diary').html();
    document.getElementById('t').appendChild(e);
}

您只需创建一个可以插入此内容的位置,例如ID为div的{​​{1}}。就像我在评论中发布的例子一样。

答案 1 :(得分:0)

因为document.write是不好的做法:

https://github.com/jasonday/printThis