MediaWiki:Glossar.js: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
K
 
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
// s.a. vorlage:glossareintrag
+
// s.a. vorlage:glossar 
 
+
$('.glossar').each(function(){
newRules[1].style.display = 'none'; //Glossar
+
   var child = $(this).find('.g_box')
 
+
    , parent = $(this).closest('p, li') ;  
var g = [], off;
+
   $( parent).css("position", "relative")
 
+
function setGlossar() {
+
  var diff = ($(this).width() - $(child).width()) / 2
   var spans = document.getElementsByTagName('SPAN');
+
     , left = $(this).position().left + diff
  for (var i=0;i<spans.length;i++)
+
     , right = $(parent).width() - ($(this).position().left + $(child).width() + 14);
    if (spans[i].className=='glossar2')  
+
      g[g.length] = spans[i];
+
  if ( left < -10) {
   for (var i=0;i<g.length;i++) {
+
    $( child).css("left", diff - left -10 + 'px');  
    g[i].onclick = showTooltip;
+
  }
    g[i].onmouseout = glossOFF;
+
    if (right < 0 ) {
    g[i].onmouseover = clearOFF;
+
    $( child).css("left", right + 'px');
    //g[i].id = 'hideG';
+
  }
 
+
//Suchen und Finden
+
   $( this).click(function(){ $( child).slideToggle('slow'); });
    var parentG = g[i].parentNode.tagName == "LI" ?
+
  $( this).mouseleave(function(){ $(child).slideUp('slow'); });
      g[i].parentNode.parentNode :
+
      (g[i].parentNode.previousSibling.tagName == "H2" || g[i].parentNode.previousSibling.tagName == "H3") ?
+
});
        g[i].parentNode.previousSibling :
 
        g[i].parentNode;
 
    var anker=parentG.insertBefore(document.createElement("A"),
 
      parentG.firstChild);
 
    anker.name=g[i].id||'';
 
    g[i].id= '';
 
    anker.id=anker.name;
 
    if (String(location.href).indexOf('#')!=-1)  
 
     var suchtext = String(location.href).substring(String(location.href).indexOf('#')).replace(/#/,'');    
 
     if (suchtext==anker.name&& suchtext.length>1) {
 
      location.href=location.href;
 
      g[i].style.backgroundColor = "#fffccc";
 
    }
 
  }
 
}
 
function hideTooltip() {
 
for (var i in g) g[i].id = '';
 
}
 
 
 
function showTooltip() {
 
// g_body ansprechen
 
  var gBody=this.getElementsByTagName('SMALL')[1];
 
//Glossarweite berechnen
 
  var em=this.parentNode.appendChild(document.createElement('div'));
 
  em.style.width=150+"pt";
 
  var gBodyOffsetWidth = em.offsetWidth;
 
  var MinL= em.offsetLeft-10;
 
  this.parentNode.removeChild(em);
 
 
 
//Positionierung
 
  var gBodyLeft = (this.offsetWidth - gBodyOffsetWidth)/2;
 
  var gBodyOffsetLeft = this.offsetLeft + gBodyLeft ;
 
  var gBodyRight = gBodyOffsetLeft + gBodyOffsetWidth;
 
  var MaxR = MinL+10+this.parentNode.offsetWidth+10;
 
  if (gBodyOffsetLeft < MinL && this.parentNode.tagName == "P")
 
    gBodyLeft = gBodyLeft + (MinL - gBodyOffsetLeft);
 
  if (gBodyRight > MaxR  && this.parentNode.offsetWidth > gBodyOffsetWidth )  
 
    gBodyLeft = gBodyLeft + (MaxR-gBodyRight);
 
  gBody.style.left = gBodyLeft +"px";
 
 
 
// anknipsen, ausknipsen
 
   if (this.id == 'showTooltip') hideTooltip();
 
  else {hideTooltip(); this.id = 'showTooltip';}
 
}
 
function glossOFF() { off= window.setTimeout('hideTooltip()', 500); }
 
function clearOFF() { if (off!='undefined') window.clearTimeout(off); }
 
 
 
// Script starten
 
addOnloadHook(setGlossar);
 

Aktuelle Version vom 17. August 2018, 09:58 Uhr

// s.a. vorlage:glossar  
$('.glossar').each(function(){
  var child = $(this).find('.g_box')
     , parent = $(this).closest('p, li') ; 
  $( parent).css("position", "relative");   
 
  var diff = ($(this).width() - $(child).width()) / 2
    , left = $(this).position().left + diff
    , right = $(parent).width() - ($(this).position().left + $(child).width() + 14);
 
   if ( left < -10) {
     $( child).css("left", diff - left -10 + 'px'); 
   }
    if (right < 0 ) { 
     $( child).css("left", right + 'px');
   }
 
  $( this).click(function(){ $( child).slideToggle('slow'); });
  $( this).mouseleave(function(){ $(child).slideUp('slow'); }); 
 
});