【发布时间】:2015-12-21 16:32:30
【问题描述】:
我有一个元素列表,我希望用户能够仅打印单击的元素,而不是整个周围的页面。元素如下所示:
<div class="element" id="#element1">Element 1</div>
<div class="element" id="#element2">Element 2</div>
<div class="element" id="#element3">Element 3</div>
为了能够只打印用户点击的元素,我使用这段代码来获取点击的任何元素:
jQuery(document).ready(function($) {
$( '.element' ).click(function() {
var clickedEl = $(this).attr('id');
printDiv( clickedEl );
return false;
});
});
被点击元素的 id 然后被传递给一个函数,创建一个非常简单的用于打印的 HTML 页面:
function printDiv(id) {
var printContents = document.getElementById(id).innerHTML;
var printContentsBefore = '<html><head>\
<link rel="stylesheet" href="/css/blabla_print.css" type="text/css" />\
</head><body><table><tr>';
var printContentsAfter = '</tr></table></body></html>';
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContentsBefore + printContents + printContentsAfter;
//document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
代码有点工作,但我有两个问题:
- 弹出的打印窗口大约有一半包含被点击元素的数据。窗户的另一半是空的。这怎么可能,我该如何解决?
- 在生成的页面中,我尝试加载 CSS 文件以格式化内容的外观,但没有任何运气。我想在这里做什么,如果可以,怎么做?
如果它是相关的;该代码正在基于 WordPress 的页面上使用。
谢谢!
【问题讨论】:
标签: javascript jquery wordpress printing