| (function() { | |
| var ignore = localStorage.getItem("bad-scale-ignore-it") == "ignore-it"; | |
| function getScale() { | |
| var ratio = 0, | |
| screen = window.screen, | |
| ua = navigator.userAgent.toLowerCase(); | |
| if (window.devicePixelRatio !== undefined) { | |
| ratio = window.devicePixelRatio; | |
| } else if (~ua.indexOf('msie')) { | |
| if (screen.deviceXDPI && screen.logicalXDPI) { | |
| ratio = screen.deviceXDPI / screen.logicalXDPI; | |
| } | |
| } else if (window.outerWidth !== undefined && window.innerWidth !== undefined) { | |
| ratio = window.outerWidth / window.innerWidth; | |
| } | |
| return ratio == 0 ? 0 : Math.round(ratio * 100); | |
| } | |
| var showing = false; | |
| var div = document.createElement("div"); | |
| div.style.position = "fixed"; | |
| div.style.top = "0px"; | |
| div.style.left = "0px"; | |
| div.style.width = "100vw"; | |
| div.style.backgroundColor = "firebrick"; | |
| div.style.textAlign = "center"; | |
| div.style.zIndex = 99; | |
| var b = document.createElement("b"); | |
| b.innerHTML = 'Bad Scale: ??% '; | |
| div.appendChild(b); | |
| var note1 = document.createElement("p"); | |
| note1.innerHTML = "Change your browser or your computer settings!"; | |
| note1.title = 'Just make sure "computer-scale" * "browser-scale" = 100% ,\n' + | |
| "you can keep your computer-scale and only change this page's scale,\n" + | |
| "for example: your computer-scale is 125%, just use [\"CTRL\"+\"-\"] to make your browser-scale of this page to 80%."; | |
| div.appendChild(note1); | |
| var note2 = document.createElement("p"); | |
| note2.innerHTML = " Otherwise, it will cause this page to not function properly!"; | |
| note2.title = "When you click \"Copy image to: [inpaint sketch]\" in some img2img's tab,\n" + | |
| "if scale<100% the canvas will be invisible,\n" + | |
| "else if scale>100% this page will take large amount of memory and CPU performance."; | |
| div.appendChild(note2); | |
| var btn = document.createElement("button"); | |
| btn.innerHTML = "Click here to ignore"; | |
| div.appendChild(btn); | |
| function tryShowTopBar(scale) { | |
| if (showing) return; | |
| b.innerHTML = 'Bad Scale: ' + scale + '% '; | |
| var updateScaleTimer = setInterval(function() { | |
| var newScale = getScale(); | |
| b.innerHTML = 'Bad Scale: ' + newScale + '% '; | |
| if (newScale == 100) { | |
| var p = div.parentNode; | |
| if (p != null) p.removeChild(div); | |
| showing = false; | |
| clearInterval(updateScaleTimer); | |
| check(); | |
| } | |
| }, 999); | |
| btn.onclick = function() { | |
| clearInterval(updateScaleTimer); | |
| var p = div.parentNode; | |
| if (p != null) p.removeChild(div); | |
| ignore = true; | |
| showing = false; | |
| localStorage.setItem("bad-scale-ignore-it", "ignore-it"); | |
| }; | |
| document.body.appendChild(div); | |
| } | |
| function check() { | |
| if (!ignore) { | |
| var timer = setInterval(function() { | |
| var scale = getScale(); | |
| if (scale != 100 && !ignore) { | |
| tryShowTopBar(scale); | |
| clearInterval(timer); | |
| } | |
| if (ignore) { | |
| clearInterval(timer); | |
| } | |
| }, 999); | |
| } | |
| } | |
| if (document.readyState != "complete") { | |
| document.onreadystatechange = function() { | |
| if (document.readyState != "complete") check(); | |
| }; | |
| } else { | |
| check(); | |
| } | |
| })(); | |