Comment puis-je utiliser jQuery dans les scripts Greasemonkey dans Google Chrome?
Comme certains d'entre vous le savez, Google Chrome a mis certains limitation sévère sur les scripts Greasemonkey.
Chrome ne prend pas en charge
@require
,@resource
,unsafeWindow
,GM_registerMenuCommand
,GM_setValue
, ouGM_getValue
.
Sans besoin, je ne peux pas trouver un moyen d'inclure la librairie jQuery dans le script Greasemonkey sous Google Chrome.
N'quelqu'un a quelques conseils à ce sujet?
- Il est intéressant de noter que Google Chrome avec Tampermonkey a un support pour
@require
maintenant, ce qui est beaucoup plus simple que ceux dans les réponses. - Tampermonkey prend également en charge unsafeWindow, qui est très agréable pour les pages qui ont déjà jQuery.
var $ = unsafeWindow.jQuery;
@require
fonctionne très bien sur les sites où vous n'êtes pas inquiet au sujet de conflit avec des milliers ou des millions d'autres bibliothèques JS qui se lient à $ lors du chargement. Toutefois, si vous écrivez un script pour un site à l'aide de $ pour quelque chose d'autre, ou pire encore l'écriture d'un script à exécuter sur chaque site, utilisez la comparaison sûr mécanisme de chargement expliqué par tghw ci-dessous.
Vous devez vous connecter pour publier un commentaire.
De "Script utilisateur Astuce: à l'Aide de jQuery - Erik Vold Blog"
script.textContent = "(" + callback.toString() + ")();";
àscript.textContent = "jQuery.noConflict();(" + callback.toString() + ")();";
dans mon propre modèle de script donc il n'y aura pas surprenant conflits. 🙂jQuery UI
ainsi que justejQuery
lui-même )-:main()
, vous pouvez utiliser$.loadScript()
, et puis tout le reste de l'exécuter quand loadScript a fini de se charger de jQueryUI.foo.user.js
fichier sur la page "extensions" pour installer/réinstaller.main
s'exécute dans le contexte de la page cible, ce qui signifie que (entre autres choses) le cross-site request de la politique de la page cible s'applique (par exemple, j'ai dû réinjecterGM_xmlhttpRequest
avant de voir qu'il ne m'aide pas). En fin de compte j'ai tout simplement copier collé le code dejquery.min.js
.J'ai écrit quelques fonctions basées sur la Erik Vold du script à l'aider à exécuter m'exécuter des fonctions, de code et d'autres scripts dans un document. Vous pouvez les utiliser pour charger jQuery dans la page, puis exécuter du code dans le cadre de la
window
portée.Exemple D'Utilisation
Vous pouvez cliquez ici pour l'installer, si vous avez confiance que je ne suis pas en train de vous tromper dans l'installation de quelque chose de malveillant et que personne n'a édité mon post pour pointer vers quelque chose d'autre. Recharger la page et vous devriez voir une bordure autour de mon post.
Fonctions
load(url, onLoad, onError)
Charge le script à
url
dans le document. En option, les 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é, de sorte qu'ils perdent de leur périmètre actuel/fermetures et sont sous la mondiale
window
portée.loadAndExecute(url, functionOrCode)
Un raccourci; cette charge un script à partir de
url
, puis insère et s'exécutefunctionOrCode
en cas de succès.Code
Utiliser jQuery sans crainte de conflits, en appelant
jQuery.noConflict(true)
. Comme:Mais, De croix-navigateur scripts, pourquoi ne pas profiter d'une belle, rapide, la copie locale de jQuery, quand vous pouvez?
Les ouvrages suivants, en tant que Chrome script et un script Greasemonkey, et il utilise le joli local
@require
copie de jQuery, si la plate-forme prend en charge.$ = unsafeWindow.jQuery
si la page a jQuery (j'ai uniquement testé en Tampermonkey).Si la page a déjà jQuery, puis il suffit de suivre ce modèle:
if
déclaration qui vérifie lawindow.location
.La manière la plus simple est d'utiliser
required
mot-clé:Il y a vraiment un moyen facile de se déplacer, notamment la copie intégrale de jQuery pour Chrome scripts lorsque ces scripts ne sont pas effectivement utiliser n'importe quel privilégié caractéristiques (GM_* fonctions, etc)...
Il suffit d'insérer le script dans la page de DOM et de l'exécuter! La meilleure partie est que cette technique fonctionne aussi bien sur Firefox+Greasemonkey, de sorte que vous pouvez utiliser le même script pour les deux:
(typiquement volé Shog9 sur meta.stackoverflow depuis il ne bouge pas d'ici, et que je dois supprimer le meta post..)
Aussi, vous pouvez apporter votre script jQuery pour extension Chrome. Voir Google Chrome est le Contenu des Scripts.
Les extensions de Chrome, contrairement aux scripts Greasemonkey, auto-mise à jour de lui-même.
Solution plus facile: coupe+coller le contenu de jquery.min.js dans le haut de votre script utilisateur. Fait.
J'ai trouvé différents problèmes avec le recommandé réponses. Le addJQuery() la solution fonctionne sur la plupart des pages, mais a des bugs sur de nombreux. Si vous avez des questions il suffit de copier+coller l'jquery contenu dans votre script.
Je me demande si on ne pouvait pas compter sur
document.defaultView.jQuery
dans votre GM script ala:Une autre approche serait de modifier votre script à charger jQuery manuellement. Exemple de http://joanpiedra.com/jquery/greasemonkey/:
EDIT: FLUTE! Après des tests, il apparaît que ce code ne fonctionne pas depuis Google Chrome fonctionne userscripts/extensions dans une autre étendue de processus/de la page web. Vous pouvez télécharger le jQuery, le code à l'aide d'un XmlhttpRequest et puis Eval, mais vous devez héberger le code sur un serveur qui permet Cross-Origin Resource Sharing à l'aide de la
Access-Control-Allow-Origin: *
en-tête. Malheureusement AUCUN des actuels réseaux de diffusion de contenu avec jQuery l'appui de cette.Extension idéale pour intégrer jQuery dans une Console Chromée aussi simple, comme vous pouvez l'imaginer. Cette extension aussi indocates si jQuery a déjà été incorporés dans la page.
Cette extension utilisée pour intégrer jQuery dans n'importe quelle page que vous voulez. Il permet d'utiliser jQuery dans l'environnement de la console (Vous pouvez invoquer le Chrome de la console par Ctrl+Maj+j").
Pour intégrer jQuery dans l'onglet sélectionné, cliquez sur le bouton de l'extension.
LIEN d'extension: https://chrome.google.com/extensions/detail/gbmifchmngifmadobkcpijhhldeeelkc