javascript - React - 打印按钮不适用于所有计算机
问题描述
在我的 React 项目中,我创建了一个包含分析摘要的单页结构。之所以是单页,是因为该页适合打印。
页面底部有一个打印按钮。单击此按钮应打开打印窗口 (CTRL + P)。页面结构没有问题。但是,问题是当我们从不同的计算机上尝试时,有些计算机会打开这个窗口,有些则不会。
起初,我们认为原因是杀毒程序,但我们试过的一台没有杀毒软件的电脑也没有打开打印窗口。
这可能是什么原因,我们该如何解决?
main_page.js
<div style={{marginLeft: "40%"}}>
<SessionTableButton id={firminfo} scoring={scoring} ... statement={statement} dname={dname}/>
</div>
会话表.js
...
export default function SessionTableButton({ id ,scoring,...,statement, dname}) {
const [ showPrint, toggleShowPrint ] = useReducer(a => !a, false);
return <td>
<Button type="button" className="text-white" style={{background:"#795D9C"}} onClick={toggleShowPrint}>
<FaPrint style={{marginRight:"10px"}}/> Get the Report
</Button>
{
showPrint && <Modal size="lg" isOpen toggle={toggleShowPrint}>
<ModalHeader className="text-center" toggle={toggleShowPrint}>
<b>Report</b>
</ModalHeader>
<ModalBody>
<SessionTable
id={id}
scoring={scoring}
altmanzscoring={altmanzscoring}
...
/>
</ModalBody>
</Modal>
}
</td>;
}
export function SessionTable({ id,scoring,...,statement, dname }) {
const ref = useRef();
...
const print = useCallback(function() {
const win = window.open('about:blank', '', 'scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=0,height=0,left=-1000,top=-1000');
const styleSheet = document.createElement("style");
styleSheet.type = "text/css";
styleSheet.innerHTML = `
@media print{ @page {size: landscape; margin: 0mm;} }
.comma > span:not(:last-child)::after { content: ', '; }
body { padding: 5mm; }
h3, h4 { text-align: center; }
button { display: none }
table { border-collapse: collapse; width: 100%; }
td, th { border: solid 1px #000; padding: 5px 5px; }
.min { width: 20%; }
.min2 { width: 1% !important; }
`;
win.document.head.appendChild(styleSheet);
win.document.body.innerHTML = ref.current.innerHTML;
win.print();
win.close();
}, [ref]);
...
...
<Button type="button" className="text-white" style={{background:"#795D9C"}} outline block onClick={print}><i className="fas fa-print" /></Button>
解决方案
推荐阅读
- javascript - 如何在隐藏的选项卡面板中获取元素位置?
- javascript - 基于来自后端的数组生成字符串 - Javascript
- swift - Core Data 中父实体的计算属性
- wordpress - 在 wordpress 中创建隐藏的自定义帖子类型
- delphi - 如何获得 MessageDlg 中显示的那些图像?
- java - Android Studio - 多个蓝牙连接
- jquery - 如何将 jQuery HTML 字符串插入 HTML 文档
- javascript - 如何在与按钮相同的页面中显示表格?表格已经在另一个 html 文件中组成,所以我只是从那里拉出来
- kotlin - 如果verify()返回Mono.error(TheException()),如何避免调用get(id)方法
- bash - 在 Team City 中重击错误的日期格式