UNPKG

s94-web

Version:

常用的web工具方法封装---牧人与鱼

107 lines (101 loc) 5.18 kB
var s94_log = (function (global){ let document = global?.document; if (!document) return console.error('缺少 document 对象!'); function s94_log(obj, note, depth){ //初始化dom if(!s94_log.outer) s94_log.outer = s94_log.init(); //渲染数据 function loop(data, depth) { var html = ''; if(typeof data === 'object') { if(depth >= 0) { html += '<i onclick="' + s94_log.outer.openfunc + '(this)" style="">-</i><ul index="' + (depth%3) + '">'; for(var k in data) { html += '<li>' + k + ' : ' + loop(data[k], (depth - 1)) + '</li>'; } html += '</ul>'; } else { html += Object.prototype.toString.call(data); } } else { html = '<xmp>' + data + '</xmp>'; } return html; } if (!note){ let now = new Date(); note = (now.getMinutes()+'').padStart(2,'0')+':'+(now.getSeconds()+'').padStart(2,'0')+'.'+(now.getMilliseconds()+'').padStart(3,'0'); } depth = typeof(depth)=='undefined' ? 2 : Number(depth); s94_log.outer.style.display = 'block'; s94_log.outer.dom_content.innerHTML += '<div><span style="color:#007AFF">' + note + '</span>: ' + loop(obj, depth || 2) + '</div>'; } /**指定挂载的父节点,组件的字体大小会继承父节点的字体大小,默认为body。 * @type {HTMLElement} */ s94_log.parent_node; s94_log.init = function() { var boxid = 's94_log' + (new Date()).getTime(), outer = document.createElement('div'), log_ico = document.createElement('span'), exit = document.createElement('p'), stl = document.createElement('style'), log_txt = document.createElement('div'); stl.innerHTML = `#${boxid} {display: none;position: fixed;font-size: inherit;bottom: 0;right: 0;width: 100%;z-index: 999999;background: #fff;color: #000;text-align: left;border-top: 1px solid #999;} #${boxid} *{padding:0;margin:0;font-size: inherit;} #${boxid}>p{display: none;height: 0;justify-content: space-between;position: absolute;top: 0;left: 0.8em;right: 0.8em;} #${boxid}>p>span{display: block;height:2em;line-height: 2;cursor: pointer;color: #E74C3C;} #${boxid}>div{display: none;background: #fff;margin-top:2em;height: 18em;max-height: 100%;padding: 0;line-height: 1.5em;overflow:auto;font-size:1em;} #${boxid}>div>div{margin-top: 1em} #${boxid} xmp{font-family: inherit;margin:0;display:inline;} #${boxid} i{color:#f00;display: inline-block;width: 1.5em;cursor: pointer;text-align: center;font-style: normal;} #${boxid} li{font-size: 1em;list-style-type: inherit;height:auto;line-height:1.2em} #${boxid} ul{padding-inline-start: 2em;} #${boxid} ul[index="0"]{list-style-type: circle;} #${boxid} ul[index="1"]{list-style-type: disc;} #${boxid} ul[index="2"]{list-style-type: square;} #${boxid}>span{display: block;color:#fff;background: rgba(0,0,0,.3);width: 1em;height: 1em;line-height:1.3em;text-align: center;font-size: 3em;position: fixed;bottom: 0.6em;right: 0.6em;cursor: pointer;} `; log_ico.innerText = '^'; function change(open){ log_ico.style.display = open ? 'none' : 'block'; log_txt.style.display = open ? 'block' : 'none'; exit.style.display = open ? 'flex' : 'none'; } log_ico.addEventListener('click', function() {change(1)}); exit.innerHTML = '<span>清空</span><span>关闭</span>'; exit.querySelector('span').addEventListener('click', function() { log_txt.innerHTML = ''; outer.style.display = 'none'; }); exit.addEventListener('click', function() {change()}); outer.id = boxid; document.querySelector('head').appendChild(stl); if (s94_log.parent_node instanceof Element){ s94_log.parent_node.appendChild(outer); }else { document.querySelector('body').appendChild(outer); } outer.appendChild(log_txt); outer.appendChild(exit); outer.appendChild(log_ico); outer.dom_content = log_txt; outer.openfunc = 'open' + boxid; window[outer.openfunc] = function(dom) { var ul = dom.parentNode.querySelector('ul'); if(dom.innerText == '-') { dom.innerText = '+'; ul.style.display = 'none'; } else { dom.innerText = '-'; ul.style.display = 'block'; } } return outer; } return s94_log; })(typeof globalThis !== 'undefined' ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); export default s94_log;