Skip to content

Instantly share code, notes, and snippets.

@wadadanet
Last active June 7, 2018 04:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wadadanet/bbc6b4ede8875e089ba10e98b4f0aefd to your computer and use it in GitHub Desktop.
Save wadadanet/bbc6b4ede8875e089ba10e98b4f0aefd to your computer and use it in GitHub Desktop.
const Print = require('./Print')
Print(document.querySelector("#Print"))
/**
* 部分印刷
* @param {Element} element: 印刷する要素
*/
const Print = function(element = false){
if(!element) return
// 印刷用の要素を作成
var print_element=document.createElement('div')
print_element.id = "PrintArea"
// すでに存在してる場合
var pre_print_element = document.querySelector("#PrintArea")
if(pre_print_element){
print_element = pre_print_element
}
else {
document.body.appendChild(print_element)
}
print_element.innerHTML = element.outerHTML
// プリント用 独自のスタイルシートを追加
var print_style = document.createElement('style')
var print_rule = document.createTextNode(`body > * { display: none }
body > #PrintArea { display: block }`)
print_style.id = "PrintAreaStyle"
print_style.media = 'print'
print_style.type = 'text/css'
if (print_style.styleSheet)
print_style.styleSheet.cssText = print_rule.nodeValue
else
print_style.appendChild(print_rule)
var screen_style = document.querySelector("#PrintAreaStyleScreen")
if(!screen_style){
screen_style = document.createElement('style')
var screen_rule = document.createTextNode(`body > #PrintArea { display: none }`)
screen_style.id = "PrintAreaStyleScreen"
screen_style.media = 'screen'
screen_style.type = 'text/css'
if (screen_style.styleSheet)
screen_style.styleSheet.cssText = screen_rule.nodeValue
else
screen_style.appendChild(screen_rule)
}
document.getElementsByTagName('head')[0].appendChild(print_style)
document.getElementsByTagName('head')[0].appendChild(screen_style)
setTimeout(()=>{
console.log("print")
window.print()
document.getElementsByTagName('head')[0].removeChild(print_style)
document.body.removeChild(print_element)
},500)
}
module.exports = Print;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment