GDBrowser/misc/sizecheck.js
2021-05-28 13:23:59 -04:00

90 lines
No EOL
2.7 KiB
JavaScript

$('body').append(`
<div data-nosnippet id="tooSmall" class="brownbox center supercenter" style="display: none; width: 80%">
<h1>Yikes!</h1>
<p>Your <cg>screen</cg> isn't <ca>wide</ca> enough to <cy>display</cy> this <cg>page</cg>.<br>
Please <cy>rotate</cy> your <cg>device</cg> <ca>horizontally</ca> or <cy>resize</cy> your <cg>window</cg> to be <ca>longer</ca>.
</p>
<p style="font-size: 1.8vh">Did I color too many words? I think I colored too many words.</p>
</div>
`)
$(window).resize(function () {
if (window.innerHeight > window.innerWidth - 75) {
$('#everything').hide();
$('#tooSmall').show();
}
else {
$('#everything').show();
$('#tooSmall').hide()
}
});
function saveUrl() {
if (window.location.href.endsWith('?download')) return;
sessionStorage.setItem('prevUrl', window.location.href);
}
function backButton() {
if (window.history.length > 1 && document.referrer.startsWith(window.location.origin)){
if (window.location.href.endsWith('?download') && sessionStorage.getItem('prevUrl') === window.location.href.replace('?download', '')) window.history.go(-2);
else window.history.back()
}
else window.location.href = "../../../../../"
}
let gdps = null
let onePointNine = false
function Fetch(link) {
return new Promise(function (res, rej) {
fetch(link).then(resp => {
if (!resp.ok) return rej(resp)
gdps = resp.headers.get('gdps')
if (gdps && gdps.startsWith('1.9/')) { onePointNine = true; gdps = gdps.slice(4) }
resp.json().then(res)
}).catch(rej)
})
}
let allowEsc = true;
let popupEsc = true;
$(document).keydown(function(k) {
if (k.keyCode == 27) { //esc
if (!allowEsc) return
k.preventDefault()
if (popupEsc && $('.popup').is(":visible")) $('.popup').hide();
else $('#backButton').trigger('click')
}
});
while ($(this).scrollTop() != 0) {
$(this).scrollTop(0);
}
$(document).ready(function() {
$(window).trigger('resize');
});
// Adds all necessary elements into the tab index (all buttons and links that aren't natively focusable)
const inaccessibleLinkSelector = "*:not(a) > img.gdButton, .leaderboardTab, .gdcheckbox, .diffDiv, .lengthDiv";
document.querySelectorAll(inaccessibleLinkSelector).forEach(elem => {
elem.setAttribute('tabindex', 0);
})
document.getElementById('backButton')?.setAttribute('tabindex', 1); // Prioritize back button, first element to be focused
// Event listener to run a .click() function if
window.addEventListener("keydown", e => {
if(e.key !== 'Enter') return;
const active = document.activeElement;
const isUnsupportedLink = active.hasAttribute('tabindex'); // Only click on links that aren't already natively supported to prevent double clicking
if(isUnsupportedLink) active.click();
})