javascript - 打印样式表不影响使用 javascript

标签 javascript jquery html css

我已经声明了一个 css 样式页面并在 css 中打印,如下所示:

@page{
size :A4 landscape;
}

@media print {
table{
    border-collapse: collapse;
    font-family : serif;
    font-size : 10px;
}

table, th, td{
    border : 1px solid black;
}

th{
    text-align: center;
}

th:first-child{
    width: 10%;
}

td{
    background-color: red;
    color: blue;
}
}

这是css在浏览器中加载成功,我已经检查过了。

现在,我有一个这样的 js 函数来管理打印页面:

function printDiv(divName) {
  var printContents = document.getElementById(divName).innerHTML;
  var originalContents = document.body.innerHTML;
  document.body.innerHTML = printContents;
  window.print();
  document.body.innerHTML = originalContents;

你知道,我有一张 table ,实际上,这是模态的 table :

<table class="table table-bordered" id="table-struk">
<thead>
    <tr>
        <th style="width: 30%;">Item</th>
        <th style="width: 15%;">By</th>
        <th style="width: 18%;">Harga</th>
        <th style="width: 2%;">Qty</th>
        <th style="width: 30%;">Sub Total</th>
    </tr>

</thead>

<tbody>

    <tr><td>Gunting</td><td>Arif</td><td>85000</td><td>2</td><td>170000</td></tr></tbody>

<tfoot>
    <tr>
        <td colspan="2"></td>
        <td colspan="2">Jumlah Qty :</td>
        <td></td>
    </tr>
    <tr>
        <td colspan="2">Kasir 1</td>
        <td colspan="2">Total Pembayaran :</td>
        <td></td>
    </tr>
    <tr>
        <td colspan="2"></td>
        <td colspan="2">Cust. Bayar :</td>
        <td></td>
    </tr>
    <tr>
        <td colspan="2"></td>
        <td colspan="2">Kembali :</td>
        <td></td>
    </tr>
</tfoot>
</table>

这是使用此功能的按钮:

<button class="btn btn-success" onclick='
               w = window.open();
               w.document.write($("#modalContent").html());
               w.print();w.close();' 
      type="button">Print Test</button>

我的问题是,CSS 不工作, 该页面现在可以打印,但不能使用上面的样式表单 css, 任何帮助,非常感谢。

最佳答案

您应该使用 media="print"

在新窗口中注入(inject) css

使用下面的代码并将 href 值替换为您的 css 文件的路径

var w= window.open();
w.document.write('<html><head><title></title>');
w.document.write( "<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\" media=\"print\"/>" ); //Inject CSS
w.document.write('</head><body >');
w.document.write($("#modalContent").html());//Your data
w.document.write('</body></html>');

mywindow.print();
mywindow.close();

关于javascript - 打印样式表不影响使用 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40402036/

相关文章:

javascript - 使用 React 实现多个列表的拖放

javascript - jquery 清除重置时的验证错误消息

javascript - 在递归计算中为 Javascript Canvas 设置动画

jquery - 为什么 jQuery.ajax 在 POST 调用后遵循重定向?

javascript - JQuery - 如果单击了具有特定 ID(通配符)的元素,则执行此操作

asp.net - 如何修复 Visual Studio 2008 中的 JQuery 智能感知问题?

html - 扩展架构微数据属性

javascript - 为图像容器超链接附加字符串添加淡入淡出效果

html - 创建一个 CSS 外观,使按钮像复选框一样工作

html - 背景图像的视口(viewport)居中?