2010-09-30 5 views
2

je le script suivant Greasemonkey assez basique:Exécution d'un script Greasemonkey sur un non-page HTML

var newloc = location.href.replace(/^(.*)-xyz-(.*)$/i, "$1$2"); 
if (newloc != location.href) 
    location.href = newloc; 

C'est, il bandes essentiellement sur "-xyz-" de l'URL et charge à nouveau la page. Ainsi, si vous accédez à "www.example.com/a-xyz-b/", la page sera rechargée sur "www.example.com/ab/".

Maintenant, le script fonctionne correctement si la page est une page HTML. Mais si j'ouvre un fichier .jpg ou quelque chose qui est pas HTML alors le script ne fonctionne pas du tout.

Est-ce juste une limitation de greasemonkey? Cela ne fonctionne que si la page est en fait texte/html? Quelle est la manière alternative de faire cette fonctionnalité?

Répondre

2

Oui, Greasemoney se déclenche sur l'événement DOMContentLoaded, qui ne semble pas se déclencher sur les objets multimédias (pas de DOM). Contournez cela en tirant sur les pages parents/référents et en modifiant les liens là-bas. Ou, si les noms de fichiers se trouvent sur la machine locale, utilisez un éditeur de texte ou un travail par lots pour renommer/réécrire les liens/noms.

Si aucune de ces solutions de contournement n'est viable, publiez les détails spécifiques de la manière dont vous alimentez ces URL vers FireFox (nommez le navigateur utilisé s'il ne s'agit pas de FF).

+0

Hmm, intéressant. Je ne faisais vraiment cela que comme une faveur pour un client et je ne connais pas tous les détails, mais merci ... vous m'avez donné quelques idées pour continuer. Si j'en obtiens plus, je mettrai à jour la question :) –

+0

À partir de Firefox 27.0.1, au moins pour le contenu 'application/json', le script greasemonkey se déclenche parfaitement lorsque JSON a fini de charger, sans autre action requise. En outre, s'il ne se déclenche pas, une chose à essayer peut être de changer @ @ run-at' en document-start' (http://stackoverflow.com/q/4978736/521032), puis de surveiller ' readyState »ou, en dernier recours, utiliser une minuterie. – Septagram

Questions connexes