2010-06-13 3 views
0

Je travaille actuellement sur une extension pour Safari 5 et je veux exécuter une fonction d'écoute à chaque fois que les modifications de paramètres sont effectuées. Apple fournit un exemple pour cela, mais cela ne fonctionne pas pour moi. J'ai actuellement cette fonction d'écouteur dans mon fichier html global:Safari Extension - Comment répondre aux changements de paramètres?

function numberChanged() 
{ 
    if(event.key == "number") 
     alert("Number has changed!"); 
} 

safari.self.addEventListener("change", numberChanged, false); 

J'espère que quelqu'un peut m'aider. Est-ce que quelqu'un sait ce que je fais mal?

Répondre

4

Je crois que vous devez inclure « événement » en tant que paramètre dans votre fonction il ressemble à ceci: mais

function numberChanged(event) 
{ 
    if(event.key == "number") 
     alert("Number has changed!"); 
} 

, cela dit, il ne fonctionne pas correctement pour moi non plus (avec ou sans param), donc je peux me tromper. Fait intéressant, chaque fois que je change un champ ou que je clique sur un bouton de ce formulaire, mon alerte (similaire à la vôtre) est déclenchée, même si je n'ai pas changé mon réglage. totalement bizarre.

mise à jour: Je l'ai fonctionné, enfin. L'exemple fourni par Apple est faux. Donc, il y a deux parties à la réponse. J'ai donné la première partie ci-dessus - vous devez ajouter 'event' en tant que paramètre à votre fonction. la deuxième partie est que l'addeventlistener doit être fait sur l'objet settings et non, comme le montre Apple, en utilisant 'self' depuis la page global.html. si l'appel de travail ressemblerait à ceci pour vous:

safari.extension.settings.addEventListener("change",numberChanged,false); 
Questions connexes