Warning: file_exists(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/var/www/vhosts/nothing-news.de/:/tmp/) in /var/www/vhosts/nothing-news.de/wiki.nothing-news.de/w/includes/shell/CommandFactory.php on line 119
MediaWiki:Common.js: Difference between revisions - Nothing Wiki
Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
No edit summary
No edit summary
Line 8: Line 8:
   // Tooltip erstellen
   // Tooltip erstellen
   const tooltip = document.createElement('div');
   const tooltip = document.createElement('div');
   tooltip.id = 'mw-custom-tooltip';
   tooltip.id = 'mw-global-tooltip';
   Object.assign(tooltip.style, {
   Object.assign(tooltip.style, {
     position: 'fixed',
     position: 'fixed',
     zIndex: 9999,
     zIndex: 999999,
     background: 'rgba(20,20,20,0.9)',
     background: 'rgba(0,0,0,0.85)',
     color: '#fff',
     color: '#fff',
     padding: '6px 10px',
     padding: '5px 10px',
     borderRadius: '6px',
     borderRadius: '5px',
     fontSize: '13px',
     fontSize: '12px',
    lineHeight: '1.3',
     pointerEvents: 'none', // Wichtig: blockiert keine Klicks
     pointerEvents: 'none',
     opacity: '0',
     opacity: '0',
     transition: 'opacity 0.15s ease, transform 0.1s ease',
     transition: 'opacity 0.15s, transform 0.1s',
     transform: 'translateY(4px)',
     transform: 'translateY(4px)',
    whiteSpace: 'nowrap'
   });
   });
   document.body.appendChild(tooltip);
   document.body.appendChild(tooltip);


   let activeEl = null;
   let activeEl = null;
  let storedTitle = null;


   document.addEventListener('mouseover', e => {
   // Tooltip anzeigen
     const target = e.target.closest('[alt]');
  function showTooltip(e) {
     if (!target) return;
     const el = e.target.closest('[title]');
     if (!el) return;


     activeEl = target;
     activeEl = el;
     tooltip.textContent = target.getAttribute('alt');
     storedTitle = el.getAttribute('title');
    if (!storedTitle) return;
 
    el.removeAttribute('title'); // Native verhindern
    tooltip.textContent = storedTitle;
     tooltip.style.opacity = '1';
     tooltip.style.opacity = '1';
     tooltip.style.transform = 'translateY(0)';
     tooltip.style.transform = 'translateY(0)';


     // Tooltip Position beim Bewegen
     moveTooltip(e);
    const move = ev => {
 
      const offset = 14;
    el.addEventListener('mousemove', moveTooltip);
      let x = ev.clientX + offset;
    el.addEventListener('mouseleave', hideTooltip, { once: true });
      let y = ev.clientY + offset;
  }
      const rect = tooltip.getBoundingClientRect();
 
      const maxX = window.innerWidth - rect.width - 10;
  // Tooltip bewegen
      const maxY = window.innerHeight - rect.height - 10;
  function moveTooltip(e) {
      tooltip.style.left = Math.min(x, maxX) + 'px';
    if (!activeEl) return;
      tooltip.style.top = Math.min(y, maxY) + 'px';
    const offset = 12;
    };
    const rect = tooltip.getBoundingClientRect();
    let x = e.clientX + offset;
    let y = e.clientY + offset;


     move(e); // Position initial setzen
     const maxX = window.innerWidth - rect.width - 10;
     target.addEventListener('mousemove', move);
    const maxY = window.innerHeight - rect.height - 10;
 
    tooltip.style.left = Math.min(x, maxX) + 'px';
    tooltip.style.top = Math.min(y, maxY) + 'px';
  }
 
  // Tooltip ausblenden
  function hideTooltip() {
    if (!activeEl) return;
     tooltip.style.opacity = '0';
    tooltip.style.transform = 'translateY(4px)';
    activeEl.setAttribute('title', storedTitle); // original wiederherstellen
    activeEl.removeEventListener('mousemove', moveTooltip);
    activeEl = null;
    storedTitle = null;
  }
 
  // Globales Event
  document.addEventListener('mouseover', showTooltip);


    // Mouseleave
    target.addEventListener('mouseleave', () => {
      tooltip.style.opacity = '0';
      tooltip.style.transform = 'translateY(4px)';
      target.removeEventListener('mousemove', move);
      activeEl = null;
    }, { once: true });
  });
})();
})();

Revision as of 23:46, 1 November 2025

/* Any JavaScript here will be loaded for all users on every page load. */
/* Schönes Tooltip-System auf Basis von alt-Attributen
   Funktioniert sicher mit Citizen & MediaWiki UI */

(function() {
  'use strict';

  // Tooltip erstellen
  const tooltip = document.createElement('div');
  tooltip.id = 'mw-global-tooltip';
  Object.assign(tooltip.style, {
    position: 'fixed',
    zIndex: 999999,
    background: 'rgba(0,0,0,0.85)',
    color: '#fff',
    padding: '5px 10px',
    borderRadius: '5px',
    fontSize: '12px',
    pointerEvents: 'none',  // Wichtig: blockiert keine Klicks
    opacity: '0',
    transition: 'opacity 0.15s, transform 0.1s',
    transform: 'translateY(4px)',
    whiteSpace: 'nowrap'
  });
  document.body.appendChild(tooltip);

  let activeEl = null;
  let storedTitle = null;

  // Tooltip anzeigen
  function showTooltip(e) {
    const el = e.target.closest('[title]');
    if (!el) return;

    activeEl = el;
    storedTitle = el.getAttribute('title');
    if (!storedTitle) return;

    el.removeAttribute('title'); // Native verhindern
    tooltip.textContent = storedTitle;
    tooltip.style.opacity = '1';
    tooltip.style.transform = 'translateY(0)';

    moveTooltip(e);

    el.addEventListener('mousemove', moveTooltip);
    el.addEventListener('mouseleave', hideTooltip, { once: true });
  }

  // Tooltip bewegen
  function moveTooltip(e) {
    if (!activeEl) return;
    const offset = 12;
    const rect = tooltip.getBoundingClientRect();
    let x = e.clientX + offset;
    let y = e.clientY + offset;

    const maxX = window.innerWidth - rect.width - 10;
    const maxY = window.innerHeight - rect.height - 10;

    tooltip.style.left = Math.min(x, maxX) + 'px';
    tooltip.style.top = Math.min(y, maxY) + 'px';
  }

  // Tooltip ausblenden
  function hideTooltip() {
    if (!activeEl) return;
    tooltip.style.opacity = '0';
    tooltip.style.transform = 'translateY(4px)';
    activeEl.setAttribute('title', storedTitle); // original wiederherstellen
    activeEl.removeEventListener('mousemove', moveTooltip);
    activeEl = null;
    storedTitle = null;
  }

  // Globales Event
  document.addEventListener('mouseover', showTooltip);

})();
Cookies help us deliver our services. By using our services, you agree to our use of cookies.