Comme certains d'entre vous le savent peut-être, Google Chrome a mis de sévères limitations sur les scripts Greasemonkey.
Chrome ne supporte pas
@require
,@resource
,unsafeWindow
,GM_registerMenuCommand
,GM_setValue
ouGM_getValue
.
Sans exiger, je ne trouve pas de moyen d'inclure la bibliothèque jQuery dans le script Greasemonkey sous Google Chrome.
Quelqu'un a-t-il des conseils à ce sujet?
@require
moment, ce qui est une approche beaucoup plus simple que celles des réponses.var $ = unsafeWindow.jQuery;
@require
fonctionne très bien sur les sites où vous ne craignez pas d'entrer en conflit avec l'un des milliers ou des millions d'autres bibliothèques JS qui se lient à $ lors du chargement. Cependant, si vous écrivez un script pour un site en utilisant $ pour autre chose, ou pire encore, écrivez un script à exécuter sur tous les sites, utilisez le mécanisme de chargement relativement sûr expliqué par tghw ci-dessous.Réponses:
Tiré de "Astuce de script utilisateur: Utilisation de jQuery - Blog d'Erik Vold"
la source
script.textContent = "(" + callback.toString() + ")();";
àscript.textContent = "jQuery.noConflict();(" + callback.toString() + ")();";
mon propre modèle de script utilisateur donc il n'y aura pas de conflits surprenants. :)main()
, vous pouvez utiliser$.loadScript()
, puis exécuter tout le reste lorsque loadScript a fini de charger jQueryUI.main
s'exécutera dans le contexte de la page cible, ce qui signifie que (entre autres) la politique de requête intersite de la page cible s'applique - (par exemple, j'ai dû réinjecterGM_xmlhttpRequest
avant de voir que c'était le cas ne m'aidez pas). À la fin, j'ai simplement copié-collé le code dejquery.min.js
.J'ai écrit quelques fonctions basées sur le script d'Erik Vold pour m'aider à exécuter des fonctions, du code et d'autres scripts dans un document. Vous pouvez les utiliser pour charger jQuery dans la page, puis exécuter du code sous la
window
portée globale .Exemple d'utilisation
Vous pouvez cliquer ici pour l'installer, si vous croyez que je n'essaye pas de vous inciter à installer quelque chose de malveillant et que personne n'a modifié mon message pour pointer vers autre chose. Rechargez la page et vous devriez voir une bordure autour de mon message.
Les fonctions
load(url, onLoad, onError)
Charge le script à
url
dans le document. En option, des rappels peuvent être fournis pouronLoad
etonError
.execute(functionOrCode)
Insère une fonction ou une chaîne de code dans le document et l'exécute. Les fonctions sont converties en code source avant d'être insérées, elles perdent donc leur portée / fermetures actuelles et sont exécutées sous la
window
portée globale .loadAndExecute(url, functionOrCode)
Un raccourci; cela charge un script à partir de
url
, puis l'insère et s'exécute enfunctionOrCode
cas de succès.Code
la source
Utilisez jQuery sans crainte de conflits , en appelant
jQuery.noConflict(true)
. Ainsi:Mais, pour les scripts multi-navigateurs, pourquoi ne pas profiter d'une belle copie locale rapide de jQuery, quand vous le pouvez?
Ce qui suit fonctionne comme un script utilisateur Chrome et un script Greasemonkey, et il utilise la belle
@require
copie locale de jQuery, si la plate-forme le prend en charge.la source
$ = unsafeWindow.jQuery
si la page a jQuery (je n'ai testé cela que dans Tampermonkey).Si la page contient déjà jQuery, suivez simplement ce modèle:
la source
if
instruction qui vérifie lewindow.location
.Le moyen simple consiste à utiliser le
required
mot-clé:la source
Il existe un moyen très simple de se déplacer, y compris une copie complète des scripts jQuery pour Chrome lorsque ces scripts n'utilisent en fait aucune fonctionnalité privilégiée ( fonctions GM_ *, etc.) ...
Insérez simplement le script lui-même dans le DOM de la page et exécutez-le! La meilleure partie est que cette technique fonctionne aussi bien sur Firefox + Greasemonkey, vous pouvez donc utiliser le même script pour les deux:
(volé sans excuse de Shog9 sur meta.stackoverflow car il ne l'a pas déplacé ici, et je dois supprimer le méta-post ..)
la source
En outre, vous pouvez emballer votre script avec l'extension jQuery to Chrome. Consultez les scripts de contenu de Google Chrome .
Les extensions Chrome, contrairement aux scripts Greasemonkey, peuvent se mettre à jour automatiquement.
la source
Solution plus simple: coupez et collez le contenu de jquery.min.js en haut de votre script utilisateur. Terminé.
J'ai trouvé divers problèmes avec les réponses recommandées. La solution addJQuery () fonctionne sur la plupart des pages mais a des bogues sur beaucoup. Si vous rencontrez des problèmes, copiez et collez simplement le contenu de jquery dans votre script.
la source
Je me demande si vous ne pouvez pas vous fier
document.defaultView.jQuery
à votre script GM ala:la source
Une autre approche serait de modifier votre script pour charger jQuery manuellement. Exemple de http://joanpiedra.com/jquery/greasemonkey/ :
EDIT: DRATS! Après le test, il semble que ce code ne fonctionne pas car Google Chrome exécute les scripts / extensions utilisateur dans une portée / un processus distinct de la page Web réelle. Vous pouvez télécharger le code jQuery à l'aide d'un XmlhttpRequest, puis l'évaluer, mais vous devez héberger le code sur un serveur qui autorise le partage de ressources inter-origines à l'aide de l'en-
Access-Control-Allow-Origin: *
tête. Malheureusement, AUCUN des CDN actuels avec jQuery ne le prend en charge.la source
Extension parfaite pour intégrer jQuery dans Chrome Console aussi simple que vous pouvez l'imaginer. Cette extension indique également si jQuery a déjà été incorporé dans la page.
Cette extension permet d'intégrer jQuery dans n'importe quelle page de votre choix. Il permet d'utiliser jQuery dans le shell de la console (vous pouvez appeler la console Chrome par "Ctrl + Shift + j").
Pour intégrer jQuery dans l'onglet sélectionné, cliquez sur le bouton d'extension.
LIEN vers l'extension: https://chrome.google.com/extensions/detail/gbmifchmngifmadobkcpijhhldeeelkc
la source