我正在执行一些脚本,将一些html添加到页面中,并将一些类添加到页面上的所有元素中。然后我通过执行以下代码调用打印:
window.print();
现在用户将打印页面或取消。在这个操作中,我需要删除html代码并删除那些类。那么,在哪个事件上,我可以执行代码来删除html代码并删除这些类呢?
您可以使用@media
标签提供打印特定的样式。
@media print {
body { font-size: 10pt }
}
您可以使用不想打印的样式隐藏数据。
请参阅此处的详细信息
我刚刚遇到了同样的问题。首先,我必须添加一个打印库。我使用了JQuery.PrintPage。然后我创建了第二个网页,这就是使用打印按钮打印的确切内容。这样,如果用户"打印"页面,他们就会得到确切的页面,如果他们使用我的"打印"按钮打印,他们就会获得打印机格式的版本。
我相信这就是我必须添加的所有代码。我将其添加到我的详细信息页面.onReady()
$("#print-link").button(
{
icons: { primary: "ui-icon-print" }
}
).printPage('@printlink');
预览我在这里为我们的生产网站提供的内容http://www.sc-pa.com/testsearch/parcel/details/0001020003
这种方法最好的部分是它优雅地失败了。如果由于某种原因禁用了javascript。打印按钮将打开一个新窗口,因为它是JqueryUI样式的超链接,用户可以使用本机浏览器打印功能。
这是链接(对于我漂亮的打印页面,它没有直接向用户公开)http://www.sc-pa.com/testsearch/parcel/PrettyPrint/0001020003
我确实认为你处理这个问题完全错误,你真的应该像其他人所说的那样处理媒体查询。然而,对于大便和咯咯笑,你可以使用以下非常糟糕的"解决方案":
(function() {
document.querySelector('a').addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
window.print();
var hideContent = function() {
if (document.hasFocus) {
var dataElem = document.getElementById('data');
dataElem.parentNode.removeChild(dataElem);
clearInterval(interval);
}
};
var interval = setInterval(hideContent, 50);
});
}());
演示根据你的问题进行了调整,包括当课程分配太慢时的另一个丑陋的破解
基本上,它在打印对话框之后检查窗口是否具有焦点。但是,你绝对不应该这样做。
我不知道浏览器支持,它可能(也可能应该)会炸毁你的电脑
顺便问一句,我是否已经提到媒体的质疑是要走的路?因为他们是。