Eu tentei colocar esta linha, mas não funciona:
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
O jQuery não funciona no Greasemonkey. Existe outra maneira de usar o jQuery no Greasemonkey?
-
Para todas as pessoas que têm o mesmo problema, você deve enviar o arquivo para o greasespot e instalá-lo a partir daí.
A opção Criar novo script não funcionaria!
jquery
greasemonkey
Keira Nighly
fonte
fonte
$(document).ready(function() {...});
em seu código@requires
é adicionar um hash ou string de consulta ao final da@require
instrução e alterá-lo sempre que precisar de atualização. Semelhante à maneira como você "esconderia" um favicon.// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js?v=changeme
Respostas:
Talvez você não tenha uma versão recente o suficiente do Greasemonkey. Foi a versão 0.8 que foi adicionada
@require
.Se você não possui 0,8, use a técnica que Joan Piedra descreve para adicionar manualmente um
script
elemento à página .Entre a versão 0.8 e 0.9,
@require
é processada apenas quando o script é instalado pela primeira vez. Se você alterar a lista de scripts necessários, precisará desinstalar e reinstalar o script; O Greasemonkey baixa o script necessário uma vez na instalação e usa uma cópia em cache posteriormente.A partir de 0,9, o comportamento do Greasemonkey mudou (para resolver um problema tangencialmente relacionado ), de modo que agora ele carrega os scripts necessários após cada edição; reinstalar o script não é mais necessário.
fonte
@require
diretivas, será necessário desinstalar e reinstalar o script para que ele entre em vigor.Se você deseja usar o jQuery em um site onde já está incluído, este é o caminho a seguir (inspirado no BrunoLM):
Sei que essa não era a intenção original da pergunta, mas está se tornando cada vez mais um caso comum e você não excluiu explicitamente esse caso. ;)
fonte
if(typeof $ == 'undefined'){ var $ = unsafeWindow.jQuery; }
No Chrome, um site Jquery já estará disponível.alert($('.submit_entry').length);
gera erros e envia o alerta apropriado ao mesmo tempo.Não há absolutamente nada de errado em incluir a totalidade do jQuery no seu script Greasemonkey. Basta pegar a fonte e colocá-la na parte superior do script do usuário. Não é necessário criar uma tag de script, pois você já está executando o JavaScript!
O usuário baixa o script apenas uma vez, portanto, o tamanho do script não é uma grande preocupação. Além disso, se você quiser que seu script Greasemonkey funcione em ambientes não-GM (como os scripts de usuário do estilo GM do Opera ou o Greasekit no Safari), ajudará a não usar construções exclusivas do GM, como @require.
fonte
A solução de Rob é a correta - use
@require
com a biblioteca jQuery e certifique-se de reinstalar o script para que a diretiva seja processada.Uma coisa que acho que vale a pena acrescentar é que você pode usar o jQuery normalmente depois de incluí-lo em seu script, exceto os métodos AJAX . Por padrão, o jQuery procura XMLHttpRequest, que não existe no contexto Greasemonkey. Eu escrevi sobre uma solução alternativa em que você cria um wrapper para GM_xmlhttpRequest (a versão Greasemonkey do XHR) e usa o jQuery
ajaxSetup()
para especificar sua versão empacotada como padrão. Depois de fazer isso, você pode usar$.get
e$.post
como de costume.Você também pode ter problemas com o jQuery,
$.getJSON
porque ele carrega JSONP usando<script>
tags. Isso gera erros porque o jQuery define a função de retorno de chamada no escopo da janela Greasemonkey, e os scripts carregados procuram o retorno de chamada no escopo da janela principal. Sua melhor aposta é usar$.get
e analisar o resultado comJSON.parse()
.fonte
Você pode criar um novo script usando o Novo Script de Usuário no Greasemonkey, mas é necessário editar o arquivo config.xml dentro da pasta gm_scripts.
Seu arquivo config.xml deve ter uma sintaxe semelhante à seguinte:
Observe a
<Require>
etiqueta.No seu script, você pode usar a sintaxe direta do jQuery. Verifique se você possui a tag de solicitação no cabeçalho Greasemonkey. Aqui está um exemplo do Hello World:
Lembre-se de que, após modificar o config.xml, é necessário reiniciar o navegador para que o Greasemonkey recarregue as configurações novamente.
Observe também que você precisa copiar o arquivo jquery.js para a pasta do diretório de scripts para que isso funcione. Eu testei isso, e só funciona se você realmente copiar o arquivo manualmente lá.
JQuerying feliz!
fonte
Atualização : como o comentário abaixo diz, esta resposta é obsoleta.
Como todo mundo já disse, o @require só é executado quando o script é instalado. No entanto, você também deve observar que atualmente o jQuery 1.4. * Não funciona com o greasemonkey. Você pode ver aqui para obter detalhes: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error
Você precisará usar o jQuery 1.3.2 até que as coisas mudem.
fonte
Se você estiver usando o chrome, precisará optar por uma alternativa, pois o Chromium não suporta
@require
.Fonte: The Chromium Project - Scripts do usuário
Mais detalhes e alternativas sobre Como posso usar o jQuery nos scripts Greasemonkey no Google Chrome?
fonte
a meta @require não funciona quando você deseja desvincular eventos em uma página da Web usando o jQuery, é necessário usar uma biblioteca jQuery incluída na página da Web e obtê-la no Greasemonkey com
var $ = unsafeWindow.jQuery;
Como desassociar os manipuladores de eventos do jquery no greasemonkey?fonte
Você pode obter
Component unavailable
se importar o script jQuery diretamente.Talvez seja sobre o que @Conley estava falando ...
Você pode usar
que é uma versão modificada para trabalhar no Greasemonkey e, em seguida, obter o objeto jQuery
fonte
@require
NÃO é processado apenas quando o script é instalado pela primeira vez! Nas minhas observações, é processado no primeiro tempo de execução! Portanto, você pode instalar um script usando o comando Greasemonkey para criar um script totalmente novo. Você só precisa se preocupar com o fato de não haver o recarregamento da página acionado, antes de adicionar a@require
peça. (e salve o novo script ...)fonte