我使用这个方法从我的webapp复制一个DIV,以打印在一个新的选项卡中或保存到数据库中,例如证书(这是一个自动化的过程,我不能要求用户这样做):https://stackoverflow.com/a/40389924/1062933 [* 谢谢!*]
printForm(): void {
let printContents: any = document.getElementById('formTerms').innerHTML;
let w: any = window.open();
w.document.write(printContents);
w.document.write('<scr' + 'ipt type="text/javascript">' + 'window.onload = function() { window.print(); window.close(); };' + '</sc' + 'ript>');
w.document.close(); // necessary for IE >= 10
w.focus(); // necessary for IE >= 10
}
但是生成的HTML没有格式化,没有主选项卡中的CSS。
是否有办法同时复制该DIV中使用的CSS样式?
- 我使用的是Angular 4和Teradata共价 *
1条答案
按热度按时间ljo96ir51#
如果你知道哪些
<style>
标签被用来设计div
的样式,你可以把那些标签的内容复制到新窗口中的新样式标签中,但是,这并不包括div
本身的样式。getComputedStyle函数可以给予元素的当前样式,然后可以在新窗口中应用它。如果您要复制的
div
中有子元素,则必须递归地执行此操作,或者将常见样式解析到生成的样式表中。链接页面中有示例,但我将其复制到此处: