모달 vue에서 윈도우 프린트를 사용하려면 어떻게 해야 하나요?
내 vue 컴포넌트는 다음과 같습니다.
<template>
...
<b-modal id="modalInvoice" size="lg" title="Invoice">
<Invoice/>
<div slot="modal-footer" class="w-100">
<b-btn size="sm" class="float-right" variant="warning" @click="show=false">
<i class="fa fa-print"></i> Print
</b-btn>
</div>
</b-modal>
...
<b-btn variant="warning" class="btn-square mt-2" v-b-modal.modalInvoice @click="checkout()"><i class="fa fa-credit-card-alt"></i>Checkout</b-btn>
...
</template>
<script>
...
export default {
...
methods: {
print() {
window.print()
}
}
}
</script>
프린트 버튼을 클릭하면 동작합니다.하지만 웹사이트 전체가 표시됩니다.인쇄 버튼을 클릭하면 모달의 내용만 표시됩니다.
어떻게 해야 하죠?
이를 위한 한 가지 방법은 모달의 클론을 작성하고 css를 사용하여 인쇄되는 내용의 가시성을 제한하는 것입니다.
print () {
const modal = document.getElementById("modalInvoice")
const cloned = modal.cloneNode(true)
let section = document.getElementById("print")
if (!section) {
section = document.createElement("div")
section.id = "print"
document.body.appendChild(section)
}
section.innerHTML = "";
section.appendChild(cloned);
window.print();
}
@media screen {
#print {
display: none;
}
}
@media print {
body * {
visibility:hidden;
}
#print, #print * {
visibility:visible;
}
#print {
position:absolute;
left:0;
top:0;
}
}
언급URL : https://stackoverflow.com/questions/52278216/how-can-i-use-window-print-in-modal-vue
'programing' 카테고리의 다른 글
Java 코드에서 Unix 쉘 스크립트를 실행하는 방법 (0) | 2022.08.03 |
---|---|
VueJS 디스패치 기능의 실행 순서에서 문제가 발생하고 있습니다. (0) | 2022.08.03 |
Java에서 시간 없이 데이트하려면 어떻게 해야 하나요? (0) | 2022.08.03 |
Vuex4 - 정의되지 않은 속성을 읽을 수 없음('상태' 읽기) (0) | 2022.08.03 |
C의 >>>= 연산자는 무엇입니까? (0) | 2022.08.03 |