User:SunKeeper/common.js
From Sun Keeperverse Wiki
More actions
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* 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();
}
});
})();