2009-09-27 6 views
0

J'essaie d'inclure cluetip dans mon script GreaseMonkey. Pour ce faire, je l'ai défini mon userscript comme suit:Comment inclure cluetip dans un script GreaseMonkey

// ==UserScript== 
// @name   myscript 
// @namespace  myscript 
// @description This is my script 
// @require  http://plugins.learningjquery.com/cluetip/jquery.cluetip.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.bgiframe.min.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.hoverIntent.js 
// @resource  jquery.cluetip.css http://plugins.learningjquery.com/cluetip/jquery.cluetip.css 
// @include  http://mysite.com/* 
// ==/UserScript== 

(function(){ 
    function GM_init() { 
     if(typeof unsafeWindow.jQuery == 'undefined') { 
      window.setTimeout(GM_wait,100); 
     } else { 
      jQuery_init(unsafeWindow.jQuery); 
     } 
    } 

    GM_init(); 

    function jQuery_init($) { 
     $('a.testTitle').cluetip({splitTitle: '|'}); 
    } 
})(); 

Quand j'importer le script, il semble importer bien et mon config.xml se termine avec cette entrée:

<Script filename="myscript.user.js" name="myscript namespace="myscript" description="This is my script" enabled="true" basedir="myscript"> 
    <Include>http://mysite.com/*</Include> 
    <Require filename="jquerycluetip.js"/> 
    <Require filename="jquerybgiframemin.js"/> 
    <Require filename="jqueryhoverintent.js"/> 
    <Resource name="jquery.cluetip.css" filename="jquerycluetip.css" mimetype="text/css"/> 
</Script> 

Une fois le script est installé je vois le référencé nécessite et les ressources ont été téléchargées et renommées selon les entrées dans le dossier myscript.

Lorsque je charge la page myscript ne s'exécute pas. J'ai essayé de redémarrer Firefox, de désinstaller et de réinstaller le script et de configurer des alertes pour m'assurer que le script ne fonctionne pas. Je ne sais pas ce qui ne va pas. Quelqu'un at-il une solution?

Pour information, JQuery est déjà inclus dans la page, je n'ai donc pas besoin de l'exiger. Si je supprime toutes les entrées de fichier config.xml, supprimez l'appel de fonction, redémarrez Firefox et essayez simplement de modifier le lien avec JQuery standard tout fonctionne correctement.

Remarque: J'ai également essayé d'ajouter JQuery à la liste @Require. Cela signifie que mon script se charge, mais échoue lors de l'appel de la première fonction de bloc.

+0

Pouvez-vous poster le script sur http://userscripts.org/ ou ailleurs et nous dire à quel site il s'agit? Je voudrais le déboguer moi-même, mais je suis trop paresseux pour faire tout le travail. J'ai écrit un certain nombre de scripts GM complexes dans le passé, mais cela fait longtemps. –

+0

c'est en fait pour un script GM pour SO. J'ai posté une explication et un lien vers la version actuelle, en utilisant ma solution de contournement, sur meta (http://meta.stackexchange.com/questions/23656/greasemonkey-script-to-gold-plate-sofu) –

+0

J'ai modifié votre SO script pour utiliser cette méthode, et il semblait toujours fonctionner correctement pour moi. J'ai simplement supprimé le @require et ajouté le code GM_init en haut. Ensuite, j'ai renommé la fonction d'initialisation anonyme en jQuery_init ($) et enlevé le $()() –

Répondre

0

Je trouve que cela fonctionne si j'importer JQuery plutôt que d'utiliser l'approche GM_init et supprimer tout le code GM_init:

// ==UserScript== 
// @name   myscript 
// @namespace  myscript 
// @description This is my script 
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.cluetip.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.bgiframe.min.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.hoverIntent.js 
// @resource  jquery.cluetip.css http://plugins.learningjquery.com/cluetip/jquery.cluetip.css 
// @include  http://mysite.com/* 
// ==/UserScript== 

$(function() { 
    $('a.testTitle').cluetip({splitTitle: '|'}); 
})(); 

Je préférerais éviter de faire ce changement et continuer à utiliser l'approche GM_init. Mais au moins j'ai une solution de contournement.

Questions connexes