2010-07-27 9 views
3

Je voulais écrire un script greasemonkey très simple parce que je déteste le "êtes-vous sûr?" javascript confirmation sur un site que j'utilise beaucoup. Je vais juste l'utiliser pour un usage personnel, ne va pas le publier ou quoi que ce soit. Après quelques recherches, j'ai trouvé http://wiki.greasespot.net/UnsafeWindow expliquant ce que je voulais faire.Comment écrire un script greasemonkey pour supprimer une boîte de dialogue de confirmation?

Le code source de la page que je veux est comme ça

var message = "Are you sure?"; 
function confirmIt(message) { 
    var result = confirm(message); 
    return result; 
} 

Je veux remplacer Confirmit (message) avec juste retour vrai;

Je fait un script

var oldFunction = unsafeWindow.confirmIt(message); 
    unsafeWindow.confirmIt(message) = function() { 
    return true; 
}; 

Je reçois l'erreur "message n'est pas défini." Je ne suis pas sûr si je vais à ce sujet (je ne pense pas), mais j'apprécierais quelques conseils de quelqu'un avec plus d'expérience dans Greasemonkey, sur la façon de remplacer une fonction Javascript sur une page .

+1

Si vous publiez la page Web, je pourrais probablement vous dire. Il est probable que le popup que vous voyez est juste un div superposé - cacher la div chaque fois que la page est chargée en utilisant greasymonkey et vous avez un travail plus facile – jakeisonline

Répondre

4

Vous devez considérer unsafeWindow.confirmIt comme une variable en plus d'une fonction (ce qui est le cas). Donc, la façon de faire ce que vous essayez dans votre code serait:

var oldFunction = unsafeWindow.confirmIt; 

unsafeWindow.confirmIt = function(message) { 
    return true; 
}; 

Essayez-le.

+0

A travaillé! Je vous remercie. Curieux cependant, je ne me soucie pas d'accéder au message variable dans ma fonction, mais si je le voulais, comment ferais-je cela si je ne semble pas avoir accès aux paramètres? –

+1

Vous avez accès aux paramètres. Votre fonction est définie en prenant un paramètre auquel il se réfère comme "message". Vous pouvez dire unsafeWindow.confirmIt = function (message) {alert (message); retourner vrai;}; et cela fonctionnerait exactement comme vous vous y attendiez. – Hellion

Questions connexes