2010-10-03 11 views
0


J'utilise le http://closure-compiler.appspot.com/home pour compresser mon code.JS Closure Compiler - Ne changez pas les noms de fonctions

MON JS fichier * EDIT: *

function test_it() 
{ 
// some code 
} 

MON Code HTML

<div onclick="test_it" />test</div> 

Mon problème est que le compresseur renomme ma fonction.

Lorsque je clique (après la compression) sur le div j'obtiens l'erreur "test_it n'est pas défini". Cela a du sens parce que la fonction a maintenant un nouveau nom "court".

Est-il possible de désactiver "en mode Avancé" la fonction "renommer fonctions"? Ou existe-t-il une autre solution?

Merci d'avance!
Peter

Répondre

1

La solution consiste à lier l'événement clic javascript:

function test_it() { 
    // some code 
} 
document.getElementById("test").onclick = test_it; 

HTML:

<div id="test">test</div> 

De cette façon, le compilateur toujours changer le nom de la fonction (gain de place) , mais cela changera aussi le nom de la référence -> problème résolu.

+0

Merci beaucoup pour cette idée! – Peter

+0

Une note rapide: Pour que cette solution fonctionne, le script doit être inclus _after_ la div dans le code HTML. Ce n'est pas un problème, puisque vous voulez ajouter les balises de script aussi tard que possible dans votre document en raison des performances côté client. – Magnar

1

Votre fonction comporte des erreurs. Vous avez une fermeture ) à la fin et un ; qui n'est pas nécessaire. Il devrait être:

function test_it() 
{ 
    // some code 
} 

Maintenant, si vous utilisez le mode simple, vous n'aurez aucun problème. Soyez prudent avec le Advanced mode, car il pourrait effectuer des optimisations et supprimer cette fonction s'il n'est pas utilisé.

Questions connexes