portée - Variables globales en Javascript sur plusieurs fichiers




var global js (4)

Je pense que vous devriez utiliser le "stockage local" plutôt que les variables globales.

Si vous craignez que le «stockage local» ne soit pas pris en charge dans les navigateurs très anciens, pensez à utiliser un plug-in existant qui vérifie la disponibilité du «stockage local» et utilise d'autres méthodes s'il n'est pas disponible.

J'ai utilisé http://www.jstorage.info/ et j'en suis content jusqu'à présent.

Une partie de mon code JavaScript se trouve dans un fichier externe appelé helpers.js. Dans le code HTML qui appelle ce code JavaScript, j'ai besoin de savoir si une certaine fonction de helpers.js a été appelée.

J'ai tenté de créer une variable globale en définissant:

var myFunctionTag = true;

En portée globale à la fois dans mon code HTML et dans helpers.js.

Voici à quoi ressemble mon code html:

<html>
...
<script type='text/javascript' src='js/helpers.js'></script>    
...
<script>
  var myFunctionTag = false;
  ...
  //I try to use myFunctionTag here but it is always false, even though it has been se t to 'true' in helpers.js
</script>

Ce que j'essaie de faire est-il faisable?


La variable peut être déclarée dans le fichier .js et simplement référencée dans le fichier HTML. Ma version de helpers.js :

var myFunctionWasCalled = false;

function doFoo()
{
    if (!myFunctionWasCalled) {
        alert("doFoo called for the very first time!");
        myFunctionWasCalled = true;
    }
    else {
        alert("doFoo called again");
    }
}

Et une page pour le tester:

<html>
<head>
<title>Test Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="helpers.js"></script>
</head>

<body>


<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>

<script type="text/javascript">doFoo();</script>

<p>Some stuff in between</p>

<script type="text/javascript">doFoo();</script>

<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>

</body>
</html>

Vous verrez l' alert() test alert() affichera deux choses différentes, et la valeur écrite sur la page sera différente la deuxième fois.


Vous devez déclarer la variable avant d'inclure le fichier helpers.js. Il suffit de créer une balise de script au-dessus de l'include pour helpers.js et de la définir ici.

<script type='text/javascript' > 
  var myFunctionTag = false; 
</script>
<script type='text/javascript' src='js/helpers.js'></script>     
... 
<script type='text/javascript' > 
  // rest of your code, which may depend on helpers.js
</script>

Vous pouvez créer un objet json comme:

globalVariable={example_attribute:"SomeValue"}; 

dans le fichierA.js

Et accédez-y à partir de fichierB.js comme: globalVariable.example_attribute





global