Versões conflitantes do jQuery em Extensões Separadas

5

Eu construí algumas extensões de navegador que vivem no Gmail. Como são extensões maiores, elas incorporam o jQuery 1.6.x.

Estou usando o jQuery como um script de conteúdo, o que significa que ele é injetado no Gmail, então meus scripts fazem referência ao jQuery conforme são carregados posteriormente.

Eu descobri que quando outras extensões são instaladas ao lado de minhas extensões e elas incorporam versões anteriores do jQuery, as versões anteriores são carregadas primeiro e meu 1.6.x é ignorado. A funcionalidade que eu tenho depende do 1.6.x não funciona mais, e isso é um problema.

Estou tentando criar uma solução elegante para isso. Meu primeiro instinto é o namespace da minha versão do jQuery, mas o carregamento do jQuery é duas vezes desajeitado. Possivelmente testando o jQuery e depois fazendo um diff, mas isso parece tedioso.

Alguma opinião?

    
por Sara Chipps 04.11.2011 / 20:53
fonte

2 respostas

2

Você poderia fazer o que o HTML5Boilerplate faz:

<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
    
por 04.11.2011 / 22:30
fonte
2

Meu sentimento pessoal é que você provavelmente não deveria injetar uma biblioteca de terceiros na página de qualquer maneira. Lembre-se de que, como é uma extensão do Google Chrome, você só precisa dar suporte a um único navegador.

Então, isso significa coisas como inscrever-se em eventos, Ajax e todas as outras coisas que os resumos do jQuery são muito fáceis, porque você não precisa se preocupar com a compatibilidade entre navegadores.

Você pode até usar o document.querySelector para obter grande parte da funcionalidade dos seletores do jQuery (não todos, embora).

Como um bônus, ele tornará sua extensão muito mais leve ao não carregar 100 KB de javascript em todas as páginas ...

    
por 05.12.2011 / 00:24
fonte