User:SunKeeper/common.js: Difference between revisions
From Sun Keeperverse Wiki
More actions
debug script to check for running Tag: Replaced |
No edit summary |
||
| Line 1: | Line 1: | ||
// | /* SK navigation – keyboard controls (WASD + arrows + Q/E for Up/Down) */ | ||
(function () { | |||
'use strict'; | |||
document.addEventListener('keydown', function (e) { | function isTypingTarget(el) { | ||
if (!el) return false; | |||
}); | var tag = (el.tagName || '').toLowerCase(); | ||
if (tag === 'input' || tag === 'textarea' || tag === 'select') return true; | |||
if (el.isContentEditable) return true; | |||
return false; | |||
} | |||
function getNavLink(selector) { | |||
var btn = document.querySelector(selector); | |||
if (!btn) return null; | |||
var a = btn.querySelector('a'); | |||
return a || null; | |||
} | |||
function navigate(selector) { | |||
var link = getNavLink(selector); | |||
if (link && link.href) { | |||
window.location.href = link.href; | |||
return true; | |||
} | |||
return false; | |||
} | |||
document.addEventListener('keydown', function (e) { | |||
if (isTypingTarget(e.target)) return; | |||
var key = e.key.toLowerCase(); | |||
var handled = false; | |||
switch (key) { | |||
case 'w': | |||
case 'arrowup': | |||
handled = navigate('.nav-link-north'); | |||
break; | |||
case 's': | |||
case 'arrowdown': | |||
handled = navigate('.nav-link-south'); | |||
break; | |||
case 'a': | |||
case 'arrowleft': | |||
handled = navigate('.nav-link-west'); | |||
break; | |||
case 'd': | |||
case 'arrowright': | |||
handled = navigate('.nav-link-east'); | |||
break; | |||
case 'q': | |||
case 'pageup': | |||
handled = navigate('.nav-link-up'); | |||
break; | |||
case 'e': | |||
case 'pagedown': | |||
handled = navigate('.nav-link-down'); | |||
break; | |||
} | |||
if (handled) { | |||
e.preventDefault(); | |||
} | |||
}); | |||
})(); | |||
Revision as of 22:38, 3 December 2025
/* SK navigation – keyboard controls (WASD + arrows + Q/E for Up/Down) */
(function () {
'use strict';
function isTypingTarget(el) {
if (!el) return false;
var tag = (el.tagName || '').toLowerCase();
if (tag === 'input' || tag === 'textarea' || tag === 'select') return true;
if (el.isContentEditable) return true;
return false;
}
function getNavLink(selector) {
var btn = document.querySelector(selector);
if (!btn) return null;
var a = btn.querySelector('a');
return a || null;
}
function navigate(selector) {
var link = getNavLink(selector);
if (link && link.href) {
window.location.href = link.href;
return true;
}
return false;
}
document.addEventListener('keydown', function (e) {
if (isTypingTarget(e.target)) return;
var key = e.key.toLowerCase();
var handled = false;
switch (key) {
case 'w':
case 'arrowup':
handled = navigate('.nav-link-north');
break;
case 's':
case 'arrowdown':
handled = navigate('.nav-link-south');
break;
case 'a':
case 'arrowleft':
handled = navigate('.nav-link-west');
break;
case 'd':
case 'arrowright':
handled = navigate('.nav-link-east');
break;
case 'q':
case 'pageup':
handled = navigate('.nav-link-up');
break;
case 'e':
case 'pagedown':
handled = navigate('.nav-link-down');
break;
}
if (handled) {
e.preventDefault();
}
});
})();