Có nhiều câu trả lời khác nhau cho vấn đề này tùy thuộc vào công cụ trình duyệt. Để giải quyết những vấn đề này theo cách đơn giản trên nhiều trình duyệt, tôi đã tạo ra https://github.com/noderaider/print.
tôi cung cấp hai gói NPM:
Cách sử dụng mà không cần Phản ứng
Cài đặt qua npm:
npm i -S print-utils
HTML:
<iframe id="print-content" src="/frame.html"></iframe>
JavaScript (ES2015)
import { usePrintFrame } from 'print-utils'
/** Start cross browser print frame */
const disposePrintFrame = usePrintFrame(document.getElementById('print-frame'))
/** Stop using print frame */
disposePrintFrame()
sử dụng cho phép Phản ứng
npm i -S react-focus
Cách sử dụng:
import React, { Component } from 'react'
import reactFocus from 'react-focus'
/** Create Focus Component */
const Focus = reactFocus(React)
/**
* Use the component within your application just like an iframe
* it will automatically be printable across all major browsers (IE10+)
*/
export default class App extends Component {
render() {
return (
<div>
<div>
<h2>Welcome to react-focus</h2>
</div>
<div>
<Focus src={`?d=${Date.now()}`} />
</div>
</div>
)
}
}
HTML trong mỗi mục hàng có đó là kịch bản riêng và id mà không đảm bảo là duy nhất trong nhiều mục hàng. Cố gắng đặt chúng trên một trang sẽ dẫn đến các vấn đề không gian tên và các kịch bản hiển thị/ẩn các trường mà chúng không nên. –
Có vẻ như bạn đã gặp phải vấn đề về thiết kế ứng dụng. – ceejayoz
Không, tôi vẫn có trình duyệt không in nội dung hiển thị trên màn hình. –