2011-08-27 14 views
8

Piszę rozszerzenie chrome, które kręci się wokół z układem strony. W tym celu chcę użyć najnowszej wersji jQuery.Jak używać jquery w skrypcie zawartości rozszerzenia chrome, gdy starsza wersja jest już na stronie

Strona, o której mowa, już zawiera wersję 1.4.4 jQuery jako część jednego ze swoich skryptów.

Jeśli dołączę nowszą wersję jQuery, strona zawiesi się. Jak mogę dołączyć najnowszą wersję jQuery, aby była dostępna tylko dla mojego skryptu treści i nie wpłynęła na skrypty już znajdujące się na stronie?

Odpowiedz

6

Jeśli wstrzykniesz swój jquery jako skrypt zawartości, będzie to sandboxed, nie będziesz mieć żadnych konfliktów bez względu na to, z czego korzysta strona nadrzędna.

+0

_ "Na przykład skrypt zawartości może zawierać JQuery v1, a strona może zawierać JQuery v2 i nie będą ze sobą konfliktować. "_ – Eric

1

Można zasadniczo zmieniać przestrzeń nazw w różnych wersjach jQuery za pomocą jej No Conflict mode i wykonywać kod w zamknięciu. Na przykład:

<script src="jquery-1.6.2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    jq162 = jQuery.noConflict(true); 
    (function ($) { 
     $(function() { 
      // Your document ready code here 
     }); 
    })(jq162); 
</script> 

Zwróć uwagę to oświadczenie sprawia jq162 dostępny do zasięgu globalnym dzięki czemu może być ponownie użyty w innym miejscu. Jeśli chcesz rozszerzyć instancję jQuery lokalnie, ustaw ją jako var.

+0

noConflict nadal pozostawia zmienną 'jQuery', prawda? – Eric

+0

Poprzez przekazanie argumentu 'true' do' noConflict() ', przywraca on zarówno pierwotny zakres zmiennych' $ 'oraz' jQuery', zgodnie z moim rozumieniem dokumentacji. – lsuarez

+0

Oznacza to, że odpowiedź na twoje pytanie brzmi "nie", gdy korzystasz z powyższego połączenia, jak wskazano, w przypadku, gdy byłam niejasna. xD (potrzebujesz kofeiny ...) – lsuarez

Powiązane problemy