Knifflige programmierfrage 2

PH

Legendäres Mitglied
Ich benutze Lightbox, wie wahrscheinlich viele hier.

Die Bilder werden von einem Script ausgeliefert, also sehen die URIs so aus:

CODE photo.php?id=123


nun möchte ich aber, dass Lightbox einen Parameter an diese URI ranhängt, also dass Lightbox z.B. dieses hier abruft anstelle der Original URI:


CODE photo.php?id=123&viewer=lightbox


Ich kann dies nicht im HTML-Dokument hinter den Link schreiben. Lightbox muss das selbst hinzufügen.

Wer weiss, welche stelle ich im Lightbox Code verändern muss?
(ich hab's nicht so mit Javascript)

Danke im voraus!
 
müsste doch relativ easy sein, oder?
wenn ich doch nur mehr JS könnte....
 
Hi,

eine Idee, ungetestet:

Im Lightbox Javascript Code unter

CODE
updateImageList: function() {  
       this.updateImageList = Prototype.emptyFunction;

       document.observe('click', (function(event){
           var target = event.findElement('a[rel^=lightbox]') || event.findElement('area[rel^=lightbox]');
           if (target) {
               event.stop();
               this.start(target);
           }
       }).bind(this));
   },



zwischenzeitlich das

target = target + "&viewer=lightbox";

erweitern bevor es an start() übergeben wird (also einfach vor this.start(target) einfügen).
 
verd...

meine Lightbox ist etwas anders:

CODE updateImageList: function() {
 if (!document.getElementsByTagName){ return; }
 var anchors = document.getElementsByTagName('a');
 var areas = document.getElementsByTagName('area');

 // loop through all anchor tags
 for (var i=0; i<anchors.length; i++){
  var anchor = anchors[i];
 
  var relAttribute = String(anchor.getAttribute('rel'));
 
  // use the string.match() method to catch 'lightbox' references in the rel attribute
  if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
   anchor.onclick = function () {myLightbox.start(this); return false;}
  }
 }

 // loop through all area tags
 // todo: combine anchor & area tag loops
 for (var i=0; i< areas.length; i++){
  var area = areas[i];
 
  var relAttribute = String(area.getAttribute('rel'));
 
  // use the string.match() method to catch 'lightbox' references in the rel attribute
  if (area.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
   area.onclick = function () {myLightbox.start(this); return false;}
  }
 }
},


ich muss da wohl irgendwas mit 'this' machen
 
es gab weiter im Programm noch eine Funktion "Start" - dort habe ich den Parameter erfolgreich hineingeschmuggelt, und am Ende der Funktion den imageLink wieder auf den ursprünglichen Zustang zurückgesetzt, damit niemand was merkt :)

Vielen Dank für die Hilfe, hat mich auf die richtige Fährte gebracht!
 
Zurück
Oben