Maciej
Figlarz
www.FinansowaWolnosc
.pl ,Początkujący
inwestor
Temat: noconflict() i lightbox
Witam,Witam,
przegooglowałem chyba wszystko na ten temat ale jestem słaby z js i nie moge się połapać.Co robie źle w w tym kodzie ,że noconflict() gryzie się z lightboxem?.Wszystko działa super ale gdy podpinam kod:
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/lightbox.js"></script>
skrypty przestają działać całkiem albo wariują.:) adres do strony http://www.jailfun.pl
O to kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/lightbox.js"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/prototype.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="pl" />
<?php include_once("data/css/index.php");?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$j = jQuery.noConflict();
function loadPage(id,file) {
$j(id).load(file);
$j.getScript( 'fadeslideshow.js',[] )
$j.getScript( 'p.js',[ ] )};
</script>
<script type="text/javascript" src="http://jailfun.pl/data/js/fadeslideshow.js"></script>
</head>
<body>
<div id="gallery">
<a href="http://jailfun.pl/data/photo/normal/1.jpg" title="Utilize a flexibilidade dos seletores da jQuery e crie um grupo de imagens como desejar. $('#gallery').lightBox();">
<img src="http://jailfun.pl/data/photo/thumb/1.png" width="72" height="72" alt="" />
</a>
</div>
Proszę podpowiedzcie mi bo już 3 dzień z tym walcze.
pozdrawiam
Daniel Goździk Freelancer
Temat: noconflict() i lightbox
Spróbuj ładować pliki w kolejności:jquery.js
prototype.js
pozostałe pliki js
ew. możesz też zaktualizować obie biblioteki do najnowszej wersji.
Możesz też zamiast $j = jQuery.noConflict() używać po prostu jQuery, czyli jQuery(document).ready(), jQuery(id).load(file) itd.
To jest obejście, które stosuję np. w Magento, które bazuje na prototype, a zdecydowanie wolę jQuery i takie rozwiązanie u mnie się sprawdza.
Teoretycznie noConflict() powinno rozwiązywać problemy z użyciem $ a w praktyce zależy to od wersji zarówno prototype, jak i jQuery.
Inną sprawą jest ograniczenie się do jednej opcji prototype/jquery, i to z różnych względów (wydajność, czas, ilości odwołań...). Jeżeli ładujesz prototype + jeszcze scriptaculous, tylko dla lightboxa, a jquery w pozostałej części, to chyba lepiej załadować lightboxa na jquery, np. http://fancybox.net/
Waldek Mazurek Front-end Developer
Temat: noconflict() i lightbox
Działa w takim porządku jak poniżej (nie zapominaj o CSS dla Lightbox):<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">Waldek Mazurek edytował(a) ten post dnia 19.09.11 o godzinie 21:30
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="pl" />
<link rel="stylesheet" href="http://www.huddletogether.com/projects/lightbox2/css/lightbox.css" type="text/css" media="screen" />
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/lightbox.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/fadeslideshow.js"></script>
<script type="text/javascript">
$j = jQuery.noConflict();
function loadPage(id, file) {
$j(id).load(file);
$j.getScript( 'fadeslideshow.js',[] );
$j.getScript( 'p.js',[ ] );
};
</script>
</head>
<body>
<div id="gallery">
<a href="http://jailfun.pl/data/photo/normal/1.jpg" rel="lightbox" title="Utilize a flexibilidade dos seletores da jQuery e crie um grupo de imagens como desejar.">
<img src="http://jailfun.pl/data/photo/thumb/1.png" width="72" height="72" alt="" />
</a>
</div>
</body>
</html>
Kamil
Borkowski
creator24.pl -
Magento, sklepy itd.
Temat: noconflict() i lightbox
Tak tylko uściślając wypowiedź Daniela:możesz używać samego jQuery zamiast $, ale najpierw zadeklaruj taką linię:
jQuery.noConflict();
Z tą kolejnością to np. w Magento stosuję dokładnie odwrotną niż podał Daniel:
1. prototype.js - standardowo sobie leci w head wraz ze wszystkimi dodatkami
2. jquery i od razu jQuery.noConflict()
3. pozostałe skryptyKamil Borkowski edytował(a) ten post dnia 19.09.11 o godzinie 21:38
Sebastian
Zaborowski
programista /
webmaster /
freelancer
Temat: noconflict() i lightbox
http://leandrovieira.com/projects/jquery/lightbox/polecam i nie ma problemu z prototype i jego 300kb... zbędna kobyła ładowana tylko dla lightboxa'a.
Andrzej
Winnicki
Frontend Architect,
Developer &
Magician
Temat: noconflict() i lightbox
Zdecydujcie sie... albo uzywacie protytpe albo jquery... nie ma sensu miec dwoch, bilbiotek, ktore od wiekow sie zzra i sa z nimi problemy (jesli sa razem). Uzytkownikowi tez ulzy jak przestanie sie w niego pchac zbedne KB.
Tomasz Zadora extends Human
Temat: noconflict() i lightbox
Jeżeli używasz prototype głównie dla lightboxa, to dla jquery istnieje coś podobnego i fajnego: colorbox - http://colorpowered.com/colorbox/Tomasz Zadora edytował(a) ten post dnia 20.09.11 o godzinie 16:28
Maciej
Figlarz
www.FinansowaWolnosc
.pl ,Początkujący
inwestor
Temat: noconflict() i lightbox
dzięki wszystkim za pomocne odpowiedzi.Ostatecznie postanowiłem zahamować siwienie moich włosów i użyłem fancyboxa;D
jeszcze raz dzięki.
pozdrawiam
Maciej
Figlarz
www.FinansowaWolnosc
.pl ,Początkujący
inwestor
Temat: noconflict() i lightbox
niestety natrafiłem na dość dziwną sprawę.Po wejściu na moją stronę i kliknięciu w portfolio a następnie niebieski obrazek ładnie pojawią się fancybox,jednak gdy przejdę do innej zakładki i wrócę do portfolio fancybox jest martwy.Taka sama sytułacja ma miejsce kiedy po załadowaniu strony kliknę w jakaś inną zakładkę niż portfolio.Jak zmodyfikować kod ,aby zaradzić tej sytułacji?Adres do strony http://www.jailfun.pl
kod w portfolio:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$j = jQuery.noConflict();
$j(document).ready(function() {
$j("a[rel=example_group]").fancybox({
'transitionIn' : 'none',
'transitionOut' : 'none',
'titlePosition' : 'over',
'titleFormat' :
function(title, currentArray, currentIndex, currentOpts) {
return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' ' + title : '') + '</span>';
}
});
});
</script>
<div id="gallery">
<a rel="example_group" href="http://jailfun.pl/data/photo/normal/2.jpg" title="Lorem ipsum dolor sit amet"><img alt="" src="http://jailfun.pl/data/photo/thumb/2.png" /></a>
</p>
</div>
Z góry dzięki za odpowiedź.
pozdrawiam
Cezary
H.
Insignia - front-end
developer
Temat: noconflict() i lightbox
taki błąd wyskakuje:e.success.call is not a function
jeżeli korzystasz z firefoxa to zainstaluj sobie firebuga i podglądaj błędy
Maciej
Figlarz
www.FinansowaWolnosc
.pl ,Początkujący
inwestor
Temat: noconflict() i lightbox
jestem php'owcem ,a ten js to ciężki kawałek chleba;De.success.call is not a function wyskakuje w bibliotece jquery czy funkcja która jest wywoływana wskazuje właśnie na ten fragment?:)
Cezary
H.
Insignia - front-end
developer
Temat: noconflict() i lightbox
Maciej Figlarz:
jestem php'owcem ,a ten js to ciężki kawałek chleba;D
e.success.call is not a function wyskakuje w bibliotece jquery czy funkcja która jest wywoływana wskazuje właśnie na ten fragment?:)
masz błąd w ajaxie a właściwie w ładowaniu tekstu.
Z tego co widzę to teraz po kliku ładujesz całego html'a a załaduj tylko sam tekst i tytuł. Tak sprawdzisz czy to jest ajax:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
return TRUE;
} else {
return FALSE;
};
Maciej
Figlarz
www.FinansowaWolnosc
.pl ,Początkujący
inwestor
Temat: noconflict() i lightbox
Cezary H.:Co masz na myśli mówiąc sam tekst i tytuł bo troche nie kumam?
Maciej Figlarz:
jestem php'owcem ,a ten js to ciężki kawałek chleba;D
e.success.call is not a function wyskakuje w bibliotece jquery czy funkcja która jest wywoływana wskazuje właśnie na ten fragment?:)
masz błąd w ajaxie a właściwie w ładowaniu tekstu.
Z tego co widzę to teraz po kliku ładujesz całego html'a a załaduj tylko sam tekst i tytuł. Tak sprawdzisz czy to jest ajax:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
return TRUE;
} else {
return FALSE;
};
Czytam książkę "Jquery wprowadzenie" - W.Gajda i funkcja load jest wywoływana w ten właśnie sposób.Czy mógłbyś mi dokładnie powiedzieć gdzie jak rozwiązać ten problem?
z góry dzięki za pomoc i wyrozumiałość
Cezary
H.
Insignia - front-end
developer
Temat: noconflict() i lightbox
z góry dzięki za pomoc i wyrozumiałość
jak popatrzysz w firebugu w to co Ci zwraca load to zobaczysz, że tam jest cała strona, razem z headem, wszystkimi skryptami, css itd.
Będzie działać jak zwrócisz tylko tekst za pomocą np jsona i go włożysz do odpowiedniego diva
Maciej
Figlarz
www.FinansowaWolnosc
.pl ,Początkujący
inwestor
Temat: noconflict() i lightbox
Staram się nie nadwyrężać dobroci innych i piszę z prośba o pomoc tylko w ostatecznych sytułacjach ,ale chyba nie przebrnę przez to sam.Próbowałem w ten sposób:
<script type="text/javascript">
function loadPage(id,file) {
$j = jQuery.noConflict();
$j.getJSON(file,
function(data) {
$j.(id).html(data);
alert(id);
});
};
</script>
Konsola nie wyrzuca żadnych błedów ,ale niestety nie umieszcza zawartości w wybranym id,alert też nie odpala.
Link który przekazuję do funkcji (index.php?controller=portfolio&action=index&headerblocked=true) odpala fragment kodu bez head.
Oj opornie coś idzie mi to jquery.
Maciej
Figlarz
www.FinansowaWolnosc
.pl ,Początkujący
inwestor
