J'ai créé un script Greasemonkey qui remplace une fonction de page:Remplacement des fonctions de page via un script utilisateur dans Chrome?
(function() {
var oldFunc = func;
func = function() {
oldFunc();
// other stuff
};
)();
J'avais toujours prévu ce script pour travailler dans les deux Gresemonkey et Chrome et on avait lu que Chrome ne supporte pas unsafeWindow
, ont donc injectait le script dans la page en convertissant la fonction en chaîne et en utilisant setTimeout
:
setTimeout("(function(){var old=func;func=function(){old();/*other stuff*/}}())", 0);
Cela fonctionne parfaitement bien dans Greasemonkey, mais me donne absolument rien dans Chrome. Il ne fait clairement pas feu, mais rien n'apparaît dans le journal. J'ai essayé un certain nombre d'autres styles d'injection, mais je n'arrive à rien. (Pour les tests, j'ai aussi ajouté un alert()
en haut de la fonction.)
setTimeout(..., 0)
- rien- L'exécution de la fonction dans le champ, sans injection dans la page - pas d'alerte, mais « func n'est pas défini » dans la console
document.href = "javascript:..."
- riendocument.body.addEventListener("load", ...)
- rien
Tous ces éléments sont avec @run-at document-end
. Malheureusement, étant mon premier utilisateur de Chrome, je ne sais pas comment le déboguer, même après une heure de Googling. De l'aide?
scénario actuel, travaille actuellement à Greasemonkey: http://pastebin.com/HtLVjYHg