const iframe = { write: (iframeDom, content) => { if (iframeDom.tagName && "iframe" == iframeDom.tagName.toLowerCase()) { let c = iframeDom.contentWindow.document; try { c.open(), c.write(content), c.close() } catch (d) { console.log("append HTML to [iframe:" + iframeDom.name + "] ERROR!") } } } }, qs = (element) => { return document.querySelector(element); }, sleazy = () => { let otherSite=/greasyfork\.org/.test(location.hostname)?"sleazyfork":"greasyfork"; qs('span.sign-in-link') ? /scripts\/\d+/.test(location.href) ? (!qs("#script-info") && (otherSite == "greasyfork" || qs("div.width-constraint>section>p>a"))) ? location.href=location.href.replace(/\/\/([^\.]+\.)?(greasyfork|sleazyfork)\.org/,"//$1"+otherSite+"\.org") : false : false : false; }; class FetchUserjs { constructor() { this.host = window.location.hostname.split(".").splice(-2).join("."); this.showTime = 10; this.quietKey = "jae_fetch_userjs_quiet"; this.countKey = "jae_fetch_userjs_count"; this.adultKey = "jae_fetch_userjs_adult"; this.tplBox = `
`; } 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) { qs('#jae_userscript_box').addEventListener(eventName, handler) } bindEvent() { this.timeId = setTimeout(() => { qs('#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', () => { $('.jae-userscript').removeClass('jae-userscript-shadow') new Promise((resolve) => setTimeout(resolve, 500)) this.setSize(370, 56) }) this.addEventListener('close', () => { sessionStorage.setItem(this.quietKey, 1); qs('#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 = 'Show Site All UserJS
', dom = document.getElementsByClassName('jae-userscript')[0]; dom.innerHTML = ''; let iframeDom = dom.children[0]; iframe.write(iframeDom, ui); this.execFrameJs(jaeFetchUserJSFrame.window); this.bindEvent(); } } } } let fu = new FetchUserjs(); ljs.exec(['jQuery'], () => { /greasyfork\.org/.test(location.hostname) && sleazyfork_redirect ? sleazy() : false; fu.render(); });