Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Problem]xajax+lightbox
Forum PHP.pl > Forum > XML, AJAX > AJAX
pinkejs
Witam serdecznie, mam problem z wyświetleniem zdjęcia za pomocą lightbox, mianowicie przekazuje przez XAJAX link:

  1. <?php
  2. function testAjaxa($id)
  3. {
  4. $obj = new xajaxResponse();
  5. $html = '<a href="images/zdjecie.jpg" rel="lightbox" title="my caption">image</a>';
  6. $obj->addAssign($id,'innerHTML',$html);
  7.  
  8. return $obj;
  9. }
  10. ?>


W sekcji HEAD mam umieszczone:

  1. <script type="text/javascript" src="/js/prototype.js"></script>
  2. <script type="text/javascript" src="/js/scriptaculous.js?load=effects"></script>
  3. <script type="text/javascript" src="/js/lightbox.js"></script>
  4. <link rel="stylesheet" href="/css/lightbox.css" type="text/css" media="screen">


Link do zdjęcia przekazuje się poprawnie, lecz po kliknięciu zamiast wyświetlać sie poprzez lightbox, po prostu uruchamia sie w przeglądarce. Chciałbym także nadmienić że przekazuje to przez Smarty, ale to chyba nie ma w tym przypadku znaczenia.

Będę wdzięczny za wszelaką pomoc przy usunięciu problemu.
chomiczek
witaj, ja własnei miałem zaczynać identyczny wątek.. mam ten sam problem.. wydaje mi się, że poprostu nie będzie można tego wyświetlić w ten sposób.. ale obym sie mylił.
prond
Lightbox parsuje stronę przy evencie window.onload

Fragment kodu lightbox'a
  1. function initLightbox() { myLightbox = new Lightbox(); }
  2. Event.observe(window, 'load', initLightbox, false);


Jak dociągasz obrazki ajax'em to nie mają one podpiętych akcji lighbox'a.

Być może wywołanie 'Lightbox.initialize()' pomoże.
yaotzin
:/ Tak to jest właśnie z technologiami openSourcowymi nie wszystkie mają do końca dobrą dokumentację :/ i to wkurza. Aby sobie poradzić z problemem który macie wystarczy dodać do twojej funkcji wywołanie

$obj->addScriptCall

  1. <?php
  2. function testAjaxa($id)
  3. {
  4. $obj = new xajaxResponse();
  5. $html = '<a href="images/zdjecie.jpg" rel="lightbox" title="my caption">image</a>';
  6. $obj->addAssign($id,'innerHTML',$html);
  7.  
  8.  
  9. $obj->addScriptCall("mojaFunkcja", "argument1", "argument2");
  10.  
  11.  
  12. return $obj;
  13. }
  14. ?>


A oprócz tego warto zapoznać się z tymi metodami:

xajaxResponse
addAlert
addAppend
addAssign
addClear
addConfirmCommands
addCreate
addCreateInput
addEvent
addHandler
addIncludeScript
addInsert
addInsertAfter
addInsertInput
addInsertInputAfter
addPrepend
addRedirect
addRemove
addRemoveHandler
addReplace
addScript
addScriptCall
getXML
loadXML
outputEntitiesOff
outputEntitiesOn
setCharEncoding
xajaxResponse

zakładam że interesują was najbardziej te:

addIncludeScript - dodaje skrypt w JS który ma sie wykonać zasada dodawania jest taka
$obj->addIncludeScript("mojefunkcje.js");
addScript - pozwala na wpisanie własnego skryptu do otrzymywanego pytania (nie wiem jak to nazwać :/ jest już prawie 2 i szare komórki idą spać)

$obj->addScript("var x = prompt('Podaj jakiś tekst');");

addScriptCall - wywołuje funkjcę zawartą w zwracanej odpowiedzi.

$obj->addScriptCall("mojaFunkcja", "argument1", "argument2");

Jak będę miał kiedyś czas to opiszę wszystkie metody zawarte w klasie xajax i funkcje. może się komuś przyda.
chomiczek
Cytat(yaotzin @ 2.05.2007, 23:51:38 ) *
Jak będę miał kiedyś czas to opiszę wszystkie metody zawarte w klasie xajax i funkcje. może się komuś przyda.


a jeśli używam advajaxa? da sie to zrobić?

EDT: Właściwie to bez żadnego problemu rozwiązałem tą kwestie u siebie, przeczytałem wcześniejsze posty (nie za wiele mi mówiły), ale zrobiłem coś takiego:

  1. function opis(nr) {
  2. $i("opis").innerHTML = '<img src="img/loading.gif" alt="" style="margin-left:200px; margin-top:20px;" />';
  3. advAJAX.get({
  4. url: "actions/opis.php?pID="+nr,
  5. onSuccess : function(obj) {
  6. $i("opis").innerHTML = obj.responseText;
  7. initLightbox();
  8. }
  9. });
  10. }


dopisałem linie, która jest pogrubiona i w tym momęcie wszystko fajnie działa biggrin.gif
slafur
A nie można zastosować image() ?
Przecież też fajnie by się sprawdziło przy tym rozwiązaniu - a i można dodać ciekawy efekt preloaderka:)

http://blatek.ma.ciekawe.info/javascript/ob_image.html
abc667
yyy?
Przecież lightbox ma prelodader i na pewno efekt lepszy niż pojawianie się obrazka tylko

http://www.huddletogether.com/projects/lightbox2/
pinkejs
Problem w XAJAX`ie można w bardzo prosty sposób rozwiązać, mianowicie wystarczy dopisać linijkę:

  1. <?php
  2. $objResponse->addScriptCall("initLightbox");
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.