Difference between revisions of "MediaWiki:Common.js"

From XilePK - Ragnarok Online Server
Jump to navigation Jump to search
Line 23: Line 23:
 
/* Auto-expand sections when clicking anchored links */
 
/* Auto-expand sections when clicking anchored links */
 
$(document).ready(function() {
 
$(document).ready(function() {
   // Check if URL has a hash (anchor)
+
   // Handle initial page load with hash
 
   if (window.location.hash) {
 
   if (window.location.hash) {
 +
    expandSectionForAnchor(window.location.hash);
 +
  }
 +
 
 +
  // Handle clicks on anchor links within the page
 +
  $(document).on('click', 'a[href^="#"]', function(event) {
 +
    var hash = $(this).attr('href');
 +
    expandSectionForAnchor(hash);
 +
  });
 +
 
 +
  // Function to expand section containing an anchor
 +
  function expandSectionForAnchor(hash) {
 
     // Try to find the anchor element
 
     // Try to find the anchor element
     var targetElement = $(window.location.hash);
+
     var targetElement = $(hash);
 
     if (targetElement.length) {
 
     if (targetElement.length) {
 
       // Find the closest collapsible section
 
       // Find the closest collapsible section

Revision as of 22:03, 12 April 2025

/* Any JavaScript here will be loaded for all users on every page load. */

$(document).ready(function() {
  $(document).on('click', '.warp-copy', function() {
    var textToCopy = $(this).attr('data-copy');
    
    var tempInput = document.createElement('textarea');
    tempInput.value = textToCopy;
    document.body.appendChild(tempInput);
    tempInput.select();
    document.execCommand('copy');
    document.body.removeChild(tempInput);
    
    var originalColor = $(this).css('color');
    $(this).css('color', 'green');
    var self = this;
    setTimeout(function() {
      $(self).css('color', originalColor);
    }, 500);
  });
});

/* Auto-expand sections when clicking anchored links */
$(document).ready(function() {
  // Handle initial page load with hash
  if (window.location.hash) {
    expandSectionForAnchor(window.location.hash);
  }
  
  // Handle clicks on anchor links within the page
  $(document).on('click', 'a[href^="#"]', function(event) {
    var hash = $(this).attr('href');
    expandSectionForAnchor(hash);
  });
  
  // Function to expand section containing an anchor
  function expandSectionForAnchor(hash) {
    // Try to find the anchor element
    var targetElement = $(hash);
    if (targetElement.length) {
      // Find the closest collapsible section
      var collapsibleSection = targetElement.closest('.mw-collapsible.mw-collapsed');
      
      // If the target is inside a collapsed section, expand it
      if (collapsibleSection.length) {
        // Click the toggle button to expand
        collapsibleSection.find('.mw-collapsible-toggle').first().click();
        
        // Scroll to the element after a short delay to allow expansion
        setTimeout(function() {
          $('html, body').animate({
            scrollTop: targetElement.offset().top - 100
          }, 200);
        }, 300);
      }
    }
  }
});