2010-10-05 13 views
1

Je ne peux pas sembler obtenir les fonctionnalités suivantes pour travailler sous Chrome et Opera (dernières versions sur Windows XP). Le code est:JS appel de fonction ne fonctionne pas dans Chrome et Opera (JS + jQuery)

$.getScript('/js/modules/'+module+'.js', function() { 
    setTimeout('window.'+module+'_init()', 800); 
}); 

Tout semble fonctionner très bien, les charges de script, la fonction init existe (quelques alertes de débogage dans cette déclaration setTimeout vérifié que le type de « window.module_init » est vraiment un fonction) mais la fonction ne fonctionne tout simplement pas.

J'ai essayé de mettre une alerte simple au début de cette fonction init, ne laissez qu'une alerte là-bas - rien n'a aidé.

Je dois dire que je suis assez perplexe, car cela fonctionne très bien sous Firefox et MSIE.

Pour votre information, la fonction init dans ce fichier js externe ressemble simplement ceci:

function notifications_init() { 
    alert('test'); 
} 

"notifications" est la valeur de ma variable "module" ci-dessus

Tout conseil est grandement appréciée :-)

+0

La console ne donne aucune indication? –

+0

non, console était calme ici –

Répondre

1
setTimeout(window[module+'_init'], 800); 
+0

qui l'a résolu, merci ... une question cependant - devrais-je utiliser la fenêtre comme un tableau au lieu d'utiliser "window.variable" pour accéder à une variable définie de cette façon: var abc = 1 –

+0

Vous n'utilisez pas la fenêtre comme un tableau, c'est juste une notation différente ... http: //www.javascripttoolbox.com/bestpractices/#squarebracket –

+0

ah, je vois ... merci! –

0

Comment sur setTimeout('window.'+module+'_init', 800);, sans les accolades?

0

Je viens de tester ce que vous expliquez ici et cela a très bien fonctionné ici. Je devine que le fichier js externe que vous chargez en utilisant $.getScript contient des erreurs.

Pourriez-vous commenter tout à l'intérieur de ce fichier à l'exception du notifications_init() que vous avez dans votre question?

C'est ce que je l'ai fait:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     alert('start'); 
     var module = 'test'; 
     $.getScript('/Scripts/' + module + '.js', function() { 
      alert('script was loaded and executed'); 
      setTimeout('window.' + module + '_init()', 800); 
     }); 
     alert('finish'); 
    }); 
</script> 

Et test.js contient seulement ceci:

function test_init() { 
    alert('test function'); 
} 
Questions connexes