Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Gadget-quickLinkCardClick.js: Difference between revisions

MediaWiki interface page
Created page with "// quickLinkCardClick.js (function () { // Wait until the DOM is fully loaded document.addEventListener('DOMContentLoaded', function () { document.querySelectorAll('.vh-quick-link-card').forEach(card => { const link = card.querySelector('a'); if (!link) return; card.addEventListener('click', function (e) { // Avoid double-activating if user clicks directly on the <a> if ( e.target.tagName.toLowerCase() === 'a' ||..."
 
mNo edit summary
Line 1: Line 1:
// quickLinkCardClick.js
// quickLinkCardClick.js
(function () {
(function () {
if(mw.config.get('wgIsMainPage') !== true) return;
   // Wait until the DOM is fully loaded
   // Wait until the DOM is fully loaded
   document.addEventListener('DOMContentLoaded', function () {
   document.addEventListener('DOMContentLoaded', function () {

Revision as of 04:28, 23 July 2025

// quickLinkCardClick.js
(function () {
	if(mw.config.get('wgIsMainPage') !== true) return;
  // Wait until the DOM is fully loaded
  document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('.vh-quick-link-card').forEach(card => {
      const link = card.querySelector('a');
      if (!link) return;

      card.addEventListener('click', function (e) {
        // Avoid double-activating if user clicks directly on the <a>
        if (
          e.target.tagName.toLowerCase() === 'a' ||
          e.target.closest('a')
        ) return;

        window.location.href = link.href;
      });

      // Accessibility: allow Enter/Space key activation
      card.setAttribute('role', 'link');
      card.setAttribute('tabindex', '0');

      card.addEventListener('keydown', function (e) {
        if (e.key === 'Enter' || e.key === ' ') {
          e.preventDefault();
          window.location.href = link.href;
        }
      });
    });
  });
})();