OK, les gars, voici mon petit test aussi. J'ai eu un problème similaire, j'ai donc décidé de tester 3 situations :
- Un fichier HTML, un fichier JS externe... cela fonctionne-t-il ? Les fonctions peuvent-elles communiquer via une variable globale ?
- Deux fichiers HTML, un fichier JS externe, un navigateur, deux onglets : vont-ils interférer via la var globale ?
- Un fichier HTML, ouvert par 2 navigateurs, est-ce que ça va fonctionner et est-ce qu'ils vont interférer ?
Tous les résultats étaient conformes aux attentes.
- Cela fonctionne. Les fonctions f1() et f2() communiquent via var global (var est dans le fichier JS externe, pas dans le fichier HTML).
- Ils n'interfèrent pas. Apparemment, des copies distinctes du fichier JS ont été faites pour chaque onglet du navigateur, chaque page HTML.
- Tout fonctionne indépendamment, comme prévu.
Au lieu de parcourir des tutoriels, j'ai trouvé plus facile de l'essayer, et c'est ce que j'ai fait. Ma conclusion : chaque fois que vous incluez un fichier JS externe dans votre page HTML, le contenu du JS externe est "copié/collé" dans votre page HTML avant que la page ne soit rendue. Ou dans votre page PHP si vous préférez. Veuillez me corriger si je me trompe. Merci.
Voici mes exemples de fichiers :
EXTERNAL JS :
var global = 0;
function f1()
{
alert('fired: f1');
global = 1;
alert('global changed to 1');
}
function f2()
{
alert('fired f2');
alert('value of global: '+global);
}
HTML 1 :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
HTML 2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index2.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
1 votes
Eh bien, vous venez de set à false dans le second
<script>
bloc de balises. Je viens d'essayer deux approches différentes (sans déclarer la variable avant le fichier helpers.js) et elles ont toutes deux fonctionné. Je vais poster une réponse, mais il semble qu'il manque un élément d'information clé dans votre question.0 votes
Window.onload = function () { //Démarrer votre code } serait la meilleure solution - Et c'est Slowpoke qui parle :)