2011-04-15 3 views
0

Comment puis-je accéder à un objet qui a été initialisé dans mon document HTML?Comment accéder à un objet JS global dans un autre fichier .js

Mon document HTML ressemble à ceci:

... 

<script type="text/javascript" id="controller">var controller = false;</script> 

    ... 

<body onload="controller = new CTRLclass()"> 

    .... 

Comment appeler controller.doAMethod() dans un fichier JavaScript externe en utilisant DOM-opérations ou même type? PPL, j'ai beaucoup de fichiers .js et mon contrôleur crée une instance d'une autre classe dans son constructeur. Dans l'instance créée de la classe, j'ai besoin d'accéder au contrôleur pour appeler une fonction de mise à jour. Comme: controller -> crée une instance de classe. class -> doit appeler controller.update(). Comment puis-je accéder au contrôleur en 'classe' - C'est tout

THX!

Répondre

0

En fait, je ne peux pas envisager pourquoi vous voulez faire ce qui précède. bande simplement tous les Javascript dans ce qui précède, tout ce que vous avez est:

...

<script type="text/javascript" src="myjsfile.js"></script> 

... 

<body> 

.... 

Et myjsfile.js faire somthing comme

window.onload = function(){ 
    var controller = new CTRLclass(); 
} 

Si elle doit être mondiale, alors vous pouvez le déplacer en dehors de la fonction onload:

var controller = false 
window.onload = function(){ 
    controller = new CTRLclass(); 
} 

l'utilisation de jQuery serait plus el Aigante, bien sûr, comme vous ne risquez aucun remplaçant onloads existant:

var controller = false 
$(document).ready(function(){ 
    controller = new CTRLclass(); 
}); 
+1

je recommande 'window.contoller = new CTRLclass();' – Raynos

+0

@Raynos - Nice, en utilisant les propriétés expando sur l'objet de la fenêtre. –

1

Vous n'avez pas besoin de la balise onload pour lancer des tâches onload. Il suffit de mettre c'est le fichier javascript externe:

var controller = false; 
function Init(){ 
    controller = new CTLRclass; 
} 
function addEvent(el, eType, fn, uC) { 
    var uC = uC || true; 
    if (el.addEventListener) { 
     el.addEventListener(eType, fn, uC); 
     return true; 
    } else if (el.attachEvent) { 
     return el.attachEvent('on' + eType, fn); 
    } else { 
     el['on' + eType] = fn; 
    } 
} 
addEvent(window, 'load', Init); 
+0

-1 code firefox uniquement. – Raynos

+0

@Raynos: Correction. Merci. –

+0

Toujours fait paraître verbeux :(. N'hésitez pas à recommander ['ender'] (http://ender.no.de/#intro) comme alternative de gestion de la gestion des événements légers.' $ (El) .bind ("load ", Init)' – Raynos

Questions connexes