CarstenP: User-JS zur Unterscheidung von Whitelist-Autoren

Beitrag lesen

Hallo zusammen,

ich habe mir ein kleines User-JavasSript fürs Forum gebastelt, mit dem man die Autoren, die man in seiner Whitelist stehen hat, noch weiter unterscheiden kann und damit unterschiedlich hervorheben kann. Vielleicht interessiert es ja irgendjemanden...

Wozu das Ganze?

Ich habe mittlerweile ziemlich viele Autoren in meiner Whitelist stehen. Gerade Personen aus der Whitelist, die nur selten posten, drohen trotz der Hervorhebung unterzugehen. Daher fand ich es recht sinnvoll, diese Autoren nochmal gesondert hervorzuheben.

Wie funktioniert das Skript?

Die Autoren, die abweichend von der in der Nutzereinstellung angegebenen Standardformatierung hervorgehoben werden sollen, werden in dem Skript in Arrays geschrieben (die Namen müssen natürlich auch in der Nutzereinstellung des Forums angegeben werden). Das Skript überprüft, ob ein span-Element die Klassen "author whitelist" enthält. Wenn ja, wird geprüft, ob der Autor in einer der "Spezialwhitelists" steht. Gegebenenfalls wird dann die Klasse "whitelist" gegen "whitelist0", "whitelist1", usw. ausgetauscht. In seinem User-CSS kann man schließlich Formatierungen für diese neuen Klassen angeben.

Das Skript habe ich in Opera 8.02 und Firefox 1.0.6 erfolgreich getestet. Im Internet Explorer 6 funktioniert es nicht (der IE scheint getAttribute() nicht auf "class" anwenden zu können, jedenfalls liefert eine Konstruktion mit getAttribute("class") in meinen Tests immer "null" als Wert).

Hier der Quelltext für zwei zusätzliche "Spezialwhitelists":
(theoretisch natürlich beliebig erweiterbar, bis jeder Whitelist-Autor seine eigene Formatierung hat... ;-) )

function whitelist() {  
  var whitelist = new Array(2);  
  whitelist[0] = new Array("Autor1","Autor2","Autor3");  
  whitelist[1] = new Array("Autor4","Autor5","Autor6");  
  var span = document.getElementsByTagName("span");  
  var anzahl =  span.length;  
  for (var i = 0; i < anzahl; i++) {  
    if (span[i].getAttribute("class") == "author whitelist") {  
      for (var j = 0; j < whitelist.length; j++) {  
        for (var k = 0; k < whitelist[j].length; k++) {  
          if (span[i].childNodes[0].nodeValue == whitelist[j][k]) {  
            span[i].setAttribute("class","author whitelist"+j);  
          }  
        }  
      }  
    }  
  }  
}  
window.onload = whitelist;

Da ich normalerweise wenig bis gar nichts mit JavaScript mache, bin ich für Verbesserungsvorschläge natürlich dankbar... ;-)

Viele Grüße
Carsten