Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[js] konflikt galerii lightbox z innymi skryptami

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

[js] konflikt galerii lightbox z innymi skryptami

Post 25.07.2011, 10:16:11

Na stronie- http://wizjo.drl.pl/looksus/nowosci_informacje mam na dole 2 orazki podpiete pod galerie Lightbox. Problem polega na tym, ze po podlaczeniu skryptow Lightboxa pozostale skrypty- rozwijanego menu i preloadowania strony przestaly dzialac. Na pozostalych podstronach gdzie nie mam zalaczonego Lightoxa mozna zobaczyc jak dzialaja.

Szukalem na wlasna reke rozwiazania i podejrzewam, ze jest to problem z przestrzenia nazw skryptu lub trzeba zastosowac jakos jQuery.noConflict . Problem w tym, ze nie do konca rozumiem jak to zrobic.

Dodam jeszcze, ze po przeniesieniu w kodzie linijek zalaczajacych skrypt Lightboxa na gore, przed pozostalymi skryptami- sytuacja sie odwraca. Reszta skryptow dziala, a Lightbox nie.
Daremna nauka bez wyciagnietych wnioskow, wielu tak sie przejechalo na ostrzu losu...
Avatar użytkownikaxhicksx
Posty: 556
Dołączył(a): 25.01.2003
Lokalizacja: Dzierżoniów

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 25.07.2011, 10:39:32

1. Wstawiasz do strony Prototype
2. Wstawiasz resztę plików związanych z Lightboxem
3. Wstawiasz jQuery
4. Wstawiasz sobie skrypty bazujące na jQuery
5. Wywołujesz
Kod: Zaznacz cały
<script type="text/javascript">
jQuery.noConflict();
</script>


Zaś w kodzie swojego menu zamiast $ korzystaj z jQuery. Ewentualnie, całą zawartość pliku z menu umieścisz w
Kod: Zaznacz cały
(function ($) {
// tutaj zawartość pliku
}(jQuery));


Cały problem polega na tym, że wiele bibliotek definiuje funkcję o nazwie $. Najlepiej z tej funkcji w ogóle nie korzystać, chyba, że dana biblioteka na oferuje alternatywy.

Poza tym, istnieje port Lightboxa dla jQuery http://leandrovieira.com/projects/jquery/lightbox/), więc z tego radziłbym korzystać, bo pozbędziesz się w ten sposób jednej ciężkiej biblioteki ze strony.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19076
Dołączył(a): 14.04.2002

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 26.07.2011, 08:09:18

Super, dziala jak nalezy! Nie bede za bardzo upierdliwy jesli zapytam jak dziala ten kawalek kodu?

Kod: Zaznacz cały
(function ($) {
// tutaj zawartość pliku
}(jQuery));
Daremna nauka bez wyciagnietych wnioskow, wielu tak sie przejechalo na ostrzu losu...
Avatar użytkownikaxhicksx
Posty: 556
Dołączył(a): 25.01.2003
Lokalizacja: Dzierżoniów

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 26.07.2011, 08:27:58

Tworzę anonimową funkcję
Kod: Zaznacz cały
function (parametr) {
// jestem sobie anonimową funkcją
}

i od razu ją wywołuję, przekazując za parametr funkcję jQuery. Parametr jest nazwany $, więc mamy spowrotem funkcję $, tylko, że zdefiniowaną w zasięgu funkcji anonimowej a nie w globalnej przestrzeni nazw. Anonimowa funkcja, to funkcja bez nazwy, więc nie śmiecimy w globalnej ani żadnej innej przestrzeni nazw dodatkową nazwą.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19076
Dołączył(a): 14.04.2002

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 22.11.2011, 23:37:31

Witam.
W nawiązaniu do powyższego wątku miałbym podobną prośbę o rozwiązanie mojego problemu z konfliktem skryptów java, które podłączone do jednej strony linkami zewnętrznymi wzajemnie się wykluczają.
Otóż, jak mam sobie poradzić kiedy w kodzie strony posiadam jeden link do pliku js -http://gettopup.com/releases/latest/top_up-min.js i drugi link do pliku js - jquery-1.6.1.min.js?
Oba pozwalają na różne prezentacje zdjęć na stronie i ten pierwszy sam działa bez zarzutu. Kiedy podłącze drugi link to ta pierwsza prezentacja przestaje działać.
W powyższych postach jest chyba porada jak sobie poradzić ze skryptami wewnątrz kodów strony ale nie z zewnętrznymi.
Czy byłaby jakaś recepta na mój problem? Z góry dzięki:)
so_jer
Posty: 2
Dołączył(a): 22.11.2011

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 23.11.2011, 08:14:05

Nie robi różnicy skąd pochodzi kod. Ważne jest jakie publiczne API udostępniają wstawiane skrypty. Czasami się okazuje, że dwa skrypty korzystają z tych samych nazw funkcji, dlatego te nadpisują się w globalnym kontekście. Drugi powód - który akurat u Ciebie podejrzewam - to odpowiednie ustawienie zależności. top_up-min.js zależy od jQuery, więc najpierw powinieneś do strony wstawić jQuery a potem ten skrypt.

Kod: Zaznacz cały
<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="http://gettopup.com/releases/latest/top_up-min.js"></script>

zauważyłem, że ten skrypt sobie sam zarządza zależnościami. To niesie ze sobą pewne konsekwencje. Ale możliwe, że wstawienie najpierw jQuery rozwiąże sprawę.

PS. i chyba niezbyt ładnie jest linkować skrypty z czyjegoś serwera, chyba, że zaznaczono, że można tak robić.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19076
Dołączył(a): 14.04.2002

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 23.11.2011, 22:59:00

Witam Admina.
Bardzo dziękuję za poradę:)
Nie do końca zrozumiałem Twoje zalecenia odnośnie kolejności wstawiania skryptów na stronę. Miałeś na myśli kolejnośc wierszy w kodzie czy czas wstawienia?
W każdym razie kombinując usunąłem link do skryptu jquery-1.6.1.min.js zostawiając tylko jeszcze jeden który był w zestawie do tej prezentacji zdjęć, czyli jquery.prettyPhoto.js. Jednak link do skryptu top_up-min.js przesunąłem wyżej w kodzie strony i oba zaczęły działać jednocześnie!
Nie wiem ile w tym szczęścia a ile Twojej pomocy nie do końca rozszyfrowanej przeze mnie ale nie mniej wielkie dzięki za pomoc:)
Jeśli chodzi o linkowanie skryptu z czyjegoś serwera to tylko tak zaleca autor ponieważ ten sam skrypt javy ściągnięty na swój komputer czy swój serwer i podłączony do kodów strony, nie działa. I dla mnie to totalna zagadka bo przecież ten sam na podlinkowanym do autorskiego serwera działa. Może spróbowałbyś podpowiedzieć dlaczego tak jest?
Pozdrawiam.
so_jer
Posty: 2
Dołączył(a): 22.11.2011

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 03.03.2015, 21:24:15

Witam, mam również z galerią w js. Mianowicie jak usunę bibliotekę w 47 linijce to zaczyna działać galeria, a przestaje wysuwany fb i partnerzy na dole i tak w kółko. Nie wiem jak ugryźć temat. Proszę o pomoc
ptorino.linuxpl.eu
the_extremist
Posty: 1
Dołączył(a): 03.03.2015

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 03.03.2015, 22:42:40

Na tej stronie jest wiele rzeczy zrobionych po prostu źle. Masz wstawione kilka razy jQuery (w tym prehistoryczną wersję jQuery 1.3.2), a do tego jeszcze Mootools i do tego jeszcze wywołujesz jQuery.noConflict kilkakrotnie i totalnie ignorujesz to wywołanie dalej używając funkcji $. Mieszanka wybuchowa.

W związku z tym, że jest tam wiele skryptów i trzebaby trochę czasu spędzić, żeby zidentyfikować wszystko to co jest zrobione źle, dostaniesz tylko ogólne wskazówki.

1. Najpierw wstaw jQuery (I TYLKO RAZ, najlepiej najnowszą wersję. U Ciebie najnowsza wersja jaką znalazłem to 1.11.0, więc tej możesz użyć). Jeśli któreś skrypty nie będą działać z wersją 1.11.0, to znaczy, że czas wymienić skrypty na lepsze/nowsze, bo takie wymagające jQuery 1.3 są po prostu przestarzałe. jQuery ma występować na stronie tylko raz, chyba, że wiesz jak radzić sobie z kilkoma wersjami jQuery na stronie i masz w ogóle powód, żeby trzymać kilka wersji tej biblioteki na stronie.
2. Potem wstaw sobie jQuery migrate, bo nie wadzi, a nie wiem do czego jest ci potrzebne.
3. Pozbądź się wszystkich wywołań jQuery.noConflict(), bo po tym co widzę uważam, że nie masz pojęcia jak tego używać. Masz je zarówno w kodzie strony jak i w zewnętrznych plikach
4. Potem wstaw Mootools i wszelkie skrypty zależne od Mootools
5. W swoich skryptach bazujących na jQuery, zrezygnuj z używania funkcji $. Zamiast tego używaj funkcji o nazwie jQuery. Mootools też definiuje taką funkcję $ i nadpisuje tę od jQuery swoją kopią.
6. Możesz zminimalizować sobie pracę w punkcie 5 (jeśli na tyle rozumiesz JavaScript, że wiesz co robisz), poprzez zmianę wywołań

Kod: Zaznacz cały
$(function () {
    // tutaj kod
});

lub

Kod: Zaznacz cały
$(document).ready(function () {
    // tutaj kod
});

na
Kod: Zaznacz cały
jQuery(function ($) {
    // tutaj kod
});

oraz
Kod: Zaznacz cały
jQuery(document).ready(function ($) {
    // tutaj kod
});


Skrypty bazujące na notacji

Kod: Zaznacz cały
var $j = jQuery.noConflict();
// dalszy kod bazujący na zmiennej $j

mogą ewentualnie zostać, ale lepiej byłoby korzystać po prostu z tego co zaproponowałem wyżej.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19076
Dołączył(a): 14.04.2002

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 26.08.2015, 13:00:33

Witam:)
Mam podobny problem z konfliktami skryptów.
Zamontowałam Jquery Image Scroller Module with Linking i po jego włączeniu przestał działać slideshow, problem jest również przy aisafecontact i lightboxem ( na innych podstronach). Ustawiłam wyświetlanie tego modułu tylko na stronie startowej, ale problem istnieje nadal - nie działał slideshow.
Próbowalam to poprawić według podpowiedzi.
dodałam skrypt <script type="text/javascript">var $j = jQuery.noConflict();</script> i zamieniłam wszystkie $ na $j w pliku jquery.min.js.
Teraz slideshow u góry działa ale zamiast przesuwających się obrazków z odnośnikami na dole strony mam widoczną belkę.
Link do strony: sp3matejko.cba.pl
Liczę na pomoc :) w wersji dla blondynki
abi
Posty: 6
Dołączył(a): 26.08.2015

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 26.08.2015, 13:02:18

Link do strony jest potrzebny, bo każdy przypadek - mimo, że problem bardzo podobny - jest inny. Zmiana w pliku jquery.min.js, jeśli w tym pliku jest kod biblioteki jQuery, to jest niestety wynikiem niezrozumienia przeznaczenia $.noConflict. Poza tym, noConflict jest ostatecznością, gdy nie da się problemu wyeliminować innym sensownym sposobem.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19076
Dołączył(a): 14.04.2002

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 26.08.2015, 13:11:24

abi
Posty: 6
Dołączył(a): 26.08.2015

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 26.08.2015, 17:24:31

Adminie:)
Rozumiem że zmiana w pliku jquery.min.js było błędne.
Podmienilam z powrotem parametry w jquery,min.js i niestety, wróciłam do punktu wyjścia.
Kompletnie nie mam pojęcia co i gdzie podmienić :/
abi
Posty: 6
Dołączył(a): 26.08.2015

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 26.08.2015, 21:05:43

Strona bazuje na Mootools + jQuery, przy czym masz wstawione 2x jQuery - 1.6.1 i 1.7.2. Prawdziwa mieszanka wybuchowa. Nad tym będzie trzeba popracować. Tak na szybko, spróbuj przez usunięcie jQuery 1.6.1 i przeniesienie 1.7.2 wyżej w kodzie, żeby skrypty zależne wcześniej od 1.6.1 miały wcześniej wczytane 1.7.2. I usuń wywołanie .noConflict(). Jak nie pomoże albo tylko częściowo pomoże to będziemy kombinować dalej.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19076
Dołączył(a): 14.04.2002

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 27.08.2015, 07:54:40

Usunęłam .noConflict() ale jak mam usunąć jQuery 1.6.1 i przenieść wyżej 1.7.2 ? w którym pliku to robić?
(pisałam, że jestem blondynka :) )
abi
Posty: 6
Dołączył(a): 26.08.2015

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 27.08.2015, 07:59:19

Widzę, że korzystasz z Joomli, CMSa za którym w ogóle nie przepadam, dlatego nie jestem w stanie pomóc jak to w nim uzyskać. Od strony wygenerowanego HTMLa widzę dwie linie
Kod: Zaznacz cały
<script src="http://sp3matejko.cba.pl/modules/mod_jqueryimagescroller/assets/js/jquery.min.js"></script>

Kod: Zaznacz cały
<script src="/modules/mod_jmod_slider/js/jquery-1.7.2.js"></script>


Pierwszej się pozbywasz, drugą przenosisz na miejsce pierwszej. Ale jak ten efekt uzyskać przez Joomlę, nie mam pojęcia.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19076
Dołączył(a): 14.04.2002

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 27.08.2015, 08:43:21

w modules/mod_jqueryimagescroller/tmpl/default.php podmieniłam z
Kod: Zaznacz cały
<script src="<?php echo JURI::base()?>modules/mod_jqueryimagescroller/assets/js/jquery.min.js"></script>

na
Kod: Zaznacz cały
<script src="<?php echo JURI::base()?>modules/modules/mod_jmod_slider/js/jquery-1.7.2.js"></script>


natomiast
Kod: Zaznacz cały
<script src="modules/mod_jmod_slider/js/jquery-1.7.2.js"></script>

znajduje się w modules/mod_slider/tmpl/sidebar.php
W tej chwili ani ani slider ani scroller nie działają :(
abi
Posty: 6
Dołączył(a): 26.08.2015

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 27.08.2015, 09:09:22

Najprościej byłoby jakby ktoś przysiadł do tego z dostępem do serwera i sprawdzał na bieżąco. Link do strony przestał działać. To celowe?
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19076
Dołączył(a): 14.04.2002

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 27.08.2015, 09:14:55

U mnie się wyświetla strona, więc może to serwer cba chwilowo usiadł. Czy mogę liczyć na ewentualną pomoc np przez Team Viewera? Haseł do serwera i strony niestety podać nie mogę z uwagi na to, że strona nie jest moją własnością. Jeśli jest taka możliwość pomocy to proszę o PW.
abi
Posty: 6
Dołączył(a): 26.08.2015

Re: [js] konflikt galerii lightbox z innymi skryptami

Post 15.09.2015, 09:13:38

Szukalem na wlasna reke rozwiazania i podejrzewam, ze jest to problem z przestrzenia nazw skryptu lub trzeba zastosowac jakos jQuery.noConflict . Problem w tym, ze nie do konca rozumiem jak to zrobic.

projekty domów gdansk
http://gdansk-projekty.pl/projekty-parterowe.html
petrarka
Posty: 1
Dołączył(a): 15.09.2015


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości

Subskrypcja

Mamy 48150 zarejestrowanych użytkowników.
Najnowszy użytkownik: kali876


Nasi użytkownicy napisali:

  • 930637 wiadomości
  • w 244287 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)