niedziela, 9 czerwca 2013

Kilka wersji biblioteki jQuery na tej samej stronie

jQuery jest bardzo fajną i przydatną biblioteką javascriptową. Standardowo posiada jednak pewną wadę. W momencie, gdy kilka komponentów umieszczonych na stronie próbuje wczytać swoje biblioteki jQuery, wyrzuca dziwne błędy (jQuery przestaje działać częściowo lub w całości). Jest to związane z faktem, że system nie wie, do której konkretnej biblioteki ma się odwołać poprzez znacznik '$'. Jak uniknąć błędów, związanych z faktem, że na stronie może być umieszczony jeden lub kilka niezależnych komponentów, a każdy z nich niezależnie wymaga do działania biblioteki jQuery opisałem w jednym z poprzednich wpisów na blogu.

Życie jednak pokazuje, że czasami jesteśmy zmuszeni do wykorzystania na jednej stronie asp.net kilku bibliotek jQuery w różnej wersji biblioteki. Np. do 95% syt. chcemy wykorzystywać bibliotekę w wersji "stabilnej', natomiast do 5% syt. chcemy wykorzystać najnowszą funkcję biblioteki dostępnej jedynie w niestabilnej wersji biblioteki. Na szczęście biblioteka jQuery pozwala na zastosowanie takiego rozwiązania.

<script src="/_layouts/scripts/jquery-1.8.2.min.js" type="text/javascript"></script>
<script src="/_layouts/scripts/jquery-ui-1.8.24.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var j182 = $.noConflict(true);$(document).ready(function(){                     
                        j182("#featured").tabs().tabs("rotate", 5000, true);
                        });//]]>
</script>


dodatkowo, po stronie kodu c# wpisujemy:

            if (!cs.IsClientScriptBlockRegistered("j182"))
                cs.RegisterClientScriptBlock(this.GetType(), "j182", @"var j182 = $.noConflict(true);", true);


W tym przypadku, mamy wczytane 2 biblioteki jQuery. Do pierwszej, w wersji 1.8.2 odwołujemy się normalnie, tj. poprzez znacznik '$', natomiast do drugiej, w wersji 1.8.24 poprzez znacznik przez nas zdefiniowany, tj. poprzez znacznik 'j182'.

Brak komentarzy:

Prześlij komentarz