print.js文件

//?打印類屬性、方法定義

/*?eslint-disable?*/

const?Print?=?function?(dom,?options)?{

????if?(!(this?instanceof?Print))?return?new?Print(dom,?options);


????this.options?=?this.extend({

??????'noPrint':?'.no-print'

????},?options);


????if?((typeof?dom)?===?"string")?{

??????this.dom?=?document.querySelector(dom);

????}?else?{

??????this.isDOM(dom)

??????this.dom?=?this.isDOM(dom)???dom?:?dom.$el;

????}


????this.init();

??};

??Print.prototype?=?{

????init:?function?()?{

??????var?content?=?this.getStyle()?+?this.getHtml();

??????this.writeIframe(content);

????},

????extend:?function?(obj,?obj2)?{

??????for?(var?k?in?obj2)?{

????????obj[k]?=?obj2[k];

??????}

??????return?obj;

????},


????getStyle:?function?()?{

??????var?str?=?"",

????????styles?=?document.querySelectorAll('style,link');

??????for?(var?i?=?0;?i?<?styles.length;?i++)?{

????????str?+=?styles[i].outerHTML;

??????}

??????str?+=?"<style>html{height:?auto?!important;overflow:?auto?!important;}</style>";

????//???str?+=?"<style>.study-wrap{height:?auto?!important;}</style>";

??????str?+=?"<style>#XMLContent{height:?auto?!important;position:relative?!important}</style>";

??????str?+=?"<style>"?+?(this.options.noPrint???this.options.noPrint?:?'.no-print')?+?"{display:none;}</style>";


??????return?str;

????},


????getHtml:?function?()?{

??????var?inputs?=?document.querySelectorAll('input');

??????var?textareas?=?document.querySelectorAll('textarea');

??????var?selects?=?document.querySelectorAll('select');


??????for?(var?k?=?0;?k?<?inputs.length;?k++)?{

????????if?(inputs[k].type?==?"checkbox"?||?inputs[k].type?==?"radio")?{

??????????if?(inputs[k].checked?==?true)?{

????????????inputs[k].setAttribute('checked',?"checked")

??????????}?else?{

????????????inputs[k].removeAttribute('checked')

??????????}

????????}?else?if?(inputs[k].type?==?"text")?{

??????????inputs[k].setAttribute('value',?inputs[k].value)

????????}?else?{

??????????inputs[k].setAttribute('value',?inputs[k].value)

????????}

??????}


??????for?(var?k2?=?0;?k2?<?textareas.length;?k2++)?{

????????if?(textareas[k2].type?==?'textarea')?{

??????????textareas[k2].innerHTML?=?textareas[k2].value

????????}

??????}


??????for?(var?k3?=?0;?k3?<?selects.length;?k3++)?{

????????if?(selects[k3].type?==?'select-one')?{

??????????var?child?=?selects[k3].children;

??????????for?(var?i?in?child)?{

????????????if?(child[i].tagName?==?'OPTION')?{

??????????????if?(child[i].selected?==?true)?{

????????????????child[i].setAttribute('selected',?"selected")

??????????????}?else?{

????????????????child[i].removeAttribute('selected')

??????????????}

????????????}

??????????}

????????}

??????}


??????return?this.dom.outerHTML;

????},


????writeIframe:?function?(content)?{

??????var?w,?doc,?iframe?=?document.createElement('iframe'),

????????f?=?document.body.appendChild(iframe);

??????iframe.id?=?"myIframe";

??????//iframe.style?=?"position:absolute;width:0;height:0;top:-10px;left:-10px;";

??????iframe.setAttribute('style',?'position:absolute;width:0;height:0;top:-10px;left:-10px;');

??????w?=?f.contentWindow?||?f.contentDocument;

??????doc?=?f.contentDocument?||?f.contentWindow.document;

??????doc.open();

??????doc.write(content);

??????doc.close();

??????var?_this?=?this

??????iframe.onload?=?function(){

????????_this.toPrint(w);

????????setTimeout(function?()?{

??????????document.body.removeChild(iframe)

????????},?100)

??????}

????},


????toPrint:?function?(frameWindow)?{

??????try?{

????????setTimeout(function?()?{

??????????frameWindow.focus();

??????????try?{

????????????if?(!frameWindow.document.execCommand('print',?false,?null))?{

??????????????frameWindow.print();

????????????}

??????????}?catch?(e)?{

????????????frameWindow.print();

??????????}

??????????frameWindow.close();

????????},?10);

??????}?catch?(err)?{

????????console.log('err',?err);

??????}

????},

????isDOM:?(typeof?HTMLElement?===?'object')??

??????function?(obj)?{

????????return?obj?instanceof?HTMLElement;

??????}?:

??????function?(obj)?{

????????return?obj?&&?typeof?obj?===?'object'?&&?obj.nodeType?===?1?&&?typeof?obj.nodeName?===?'string';

??????}

??};

??const?MyPlugin?=?{}

??MyPlugin.install?=?function?(Vue,?options)?{

????//?4.?添加實(shí)例方法

????Vue.prototype.$print?=?Print

??}

??export?default?MyPlugin

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容