class FetchUserjs { constructor() { this.host = this.getMainHost(); this.showTime = 10; this.quietKey = 'jae_fetch_userjs_quiet'; this.countKey = 'jae_fetch_userjs_count'; this.tplBox = '
'; } getMainHost () { let host = window.location.hostname return psl.get(host) || host.split('.').splice(-2).join('.') } getCountData(host) { let countData = GM_getResourceText('count') countData = JSON.parse(countData) let count = countData[host] sessionStorage.setItem(this.countKey, count) return count } setSize(w, h) { $('.jae-userscript').css({ width: w, height: h }) } addEventListener(eventName, handler) { document.getElementById('jae_userscript_box').addEventListener(eventName, handler) } bindEvent() { this.timeId = setTimeout(() => { $('#jae_userscript_box').remove(); }, this.showTime * 1000); this.addEventListener('max', () => { this.setSize(860, 492) $('.jae-userscript').addClass('jae-userscript-shadow') clearTimeout(this.timeId); }) this.addEventListener('min', () => { setTimeout(() => { $('.jae-userscript').removeClass('jae-userscript-shadow') this.setSize(370, 56) }, 500) }) this.addEventListener('close', () => { sessionStorage.setItem(this.quietKey, 1); $('#jae_userscript_box').remove(); }) this.addEventListener('loading',() => { clearTimeout(this.timeId); }) } execFrameJs(frameWindow) { let uiJs = GM_getResourceText('uiJs'); return function(jsStr) { frameWindow.eval(jsStr); }.call(frameWindow, uiJs); } get isQuiet() { let quiet = sessionStorage.getItem(this.quietKey); return quiet ? true : false; } render() { if (!this.isQuiet) { let count = this.getCountData(this.host) if(count) { $('body').append(this.tplBox); let ui = GM_getResourceText('ui'); let dom = document.getElementsByClassName('jae-userscript')[0] var tpl = ''; dom.innerHTML = tpl; var iframeDom = dom.children[0]; iframe.write(iframeDom, ui); this.execFrameJs(jaeFetchUserJSFrame.window); this.bindEvent(); } } } } ljs.exec(['jQuery', 'iframe', 'psl'], () => { let fu = new FetchUserjs(); fu.render(); });