Como alguns de vocês devem saber, o Google Chrome colocou algumas limitações graves nos scripts Greasemonkey.
O Chromium não suporta
@require
,@resource
,unsafeWindow
,GM_registerMenuCommand
,GM_setValue
, ouGM_getValue
.
Sem necessidade, não consigo encontrar uma maneira de incluir a biblioteca jQuery no script Greasemonkey no Google Chrome.
Alguém tem algum conselho nesse assunto?
@require
enquanto, que é uma abordagem muito mais simples do que a das respostas.var $ = unsafeWindow.jQuery;
@require
funciona muito bem em sites onde você não está preocupado em entrar em conflito com qualquer uma das milhares ou milhões de outras bibliotecas JS vinculadas a $ após o carregamento. No entanto, se você estiver escrevendo um script para um site usando $ para outra coisa, ou ainda pior, um script para ser executado em todos os sites de todos os tempos, use o mecanismo de carregamento comparativamente seguro, explicado por tghw abaixo.Respostas:
De "Dica de script do usuário: Usando jQuery - Blog de Erik Vold"
fonte
script.textContent = "(" + callback.toString() + ")();";
parascript.textContent = "jQuery.noConflict();(" + callback.toString() + ")();";
em meu próprio modelo de script de usuário de modo que não haverá quaisquer conflitos surpreendentes. :)main()
, você pode usar$.loadScript()
e executar todo o resto quando o loadScript terminar de carregar o jQueryUI.main
será executado no contexto da página de destino, o que significa que (entre outras coisas) a política de solicitação entre sites da página de destino se aplica - (por exemplo, eu tive que reinjetarGM_xmlhttpRequest
antes de ver que isso acontecia) não me ajude). No final, simplesmente copiei e colei o código dejquery.min.js
.Escrevi algumas funções baseadas no script de Erik Vold para me ajudar a executar funções, códigos e outros scripts em um documento. Você pode usá-los para carregar o jQuery na página e, em seguida, executar o código no
window
escopo global .Exemplo de uso
Você pode clicar aqui para instalá-lo, se confiar que não estou tentando induzi-lo a instalar algo malicioso e que ninguém editou minha postagem para apontar para outra coisa. Recarregue a página e você verá uma borda em volta da minha postagem.
Funções
load(url, onLoad, onError)
Carrega o script em
url
no documento. Opcionalmente, retornos de chamada podem ser fornecidos paraonLoad
eonError
.execute(functionOrCode)
Insere uma função ou sequência de código no documento e a executa. As funções são convertidas em código-fonte antes de serem inseridas, de modo que perdem seu escopo / fechamento atual e são executadas sob o global
window
escopo .loadAndExecute(url, functionOrCode)
Um atalho; isso carrega um script de
url
e depois insere e executafunctionOrCode
se for bem-sucedido.Código
fonte
Use jQuery sem medo de conflitos , ligando
jQuery.noConflict(true)
. Igual a:Mas, para scripts entre navegadores, por que não aproveitar uma cópia local rápida e agradável do jQuery, quando você pode?
O seguinte funciona como um script de usuário do Chrome e um script Greasemonkey e usa a boa
@require
cópia local do jQuery, se a plataforma suportar.fonte
$ = unsafeWindow.jQuery
se a página tiver jQuery (eu testei isso apenas no Tampermonkey).Se a página já possui jQuery, basta seguir este modelo:
fonte
if
declaração que verifica owindow.location
.A maneira simples é usar a
required
palavra-chave:fonte
Existe uma maneira muito fácil de contornar, incluindo uma cópia completa dos scripts do jQuery for Chrome, quando esses scripts não usam nenhum recurso privilegiado ( funções GM_ *, etc) ...
Basta inserir o próprio script na página DOM e executar! A melhor parte é que essa técnica funciona tão bem no Firefox + Greasemonkey, para que você possa usar o mesmo script para ambos:
(roubado sem desculpa de Shog9 no meta.stackoverflow, pois ele não o moveu para cá, e eu tenho que excluir o meta post ..)
fonte
Além disso, você pode compactar seu script com a extensão jQuery to Chrome. Veja os scripts de conteúdo do Google Chrome .
As extensões do Chrome, ao contrário dos scripts Greasemonkey, podem se atualizar automaticamente.
fonte
Solução mais fácil: corte e cole o conteúdo de jquery.min.js na parte superior do script do usuário. Feito.
Encontrei vários problemas com as respostas recomendadas. A solução addJQuery () funciona na maioria das páginas, mas possui bugs em muitas. Se você tiver problemas, basta copiar + colar o conteúdo do jquery no seu script.
fonte
Gostaria de saber se você não poderia confiar
document.defaultView.jQuery
em seu script GM ala:fonte
Outra abordagem seria modificar seu script para carregar o jQuery manualmente. Exemplo de http://joanpiedra.com/jquery/greasemonkey/ :
EDIT: DRATS! Após o teste, parece que esse código não funciona, pois o Google Chrome executa scripts / extensões de usuários em um escopo / processo separado da página da Web real. Você pode baixar o código do jQuery usando um XmlhttpRequest e, em seguida, avaliar, mas é necessário hospedar o código em um servidor que permita o compartilhamento de recursos de origem cruzada usando o
Access-Control-Allow-Origin: *
cabeçalho. Infelizmente, nenhum dos CDNs atuais com jQuery suporta isso.fonte
Extensão perfeita para incorporar o jQuery no Chrome Console da maneira mais simples que você pode imaginar. Essa extensão também indica se o jQuery já foi incorporado na página.
Esta extensão costumava incorporar o jQuery em qualquer página que você deseja. Ele permite usar o jQuery no shell do console (você pode chamar o console do Chrome por "Ctrl + Shift + j").
Para incorporar o jQuery na guia selecionada, clique no botão de extensão.
LINK para a extensão: https://chrome.google.com/extensions/detail/gbmifchmngifmadobkcpijhhldeeelkc
fonte