OK, chłopaki, oto mój mały test. Miałem podobny problem, więc postanowiłem przetestować 3 sytuacje:
- Jeden plik HTML, jeden zewnętrzny plik JS ... czy to w ogóle działa - czy funkcje mogą się komunikować poprzez globalną zmienną?
- Dwa pliki HTML, jeden zewnętrzny plik JS, jedna przeglądarka, dwie zakładki: czy będą kolidować przez globalną zmienną?
- Jeden plik HTML, otwarty przez 2 przeglądarki, czy zadziała i czy będą przeszkadzać?
Wszystkie wyniki były zgodne z oczekiwaniami.
- To działa. Funkcje f1 () i f2 () komunikują się poprzez globalną zmienną (var znajduje się w zewnętrznym pliku JS, a nie w pliku HTML).
- Nie przeszkadzają. Najwyraźniej odrębne kopie pliku JS zostały wykonane dla każdej karty przeglądarki, każdej strony HTML.
- Wszystko działa niezależnie, zgodnie z oczekiwaniami.
Zamiast przeglądać samouczki, łatwiej mi było go wypróbować, więc tak zrobiłem. Mój wniosek: za każdym razem, gdy umieścisz zewnętrzny plik JS na swojej stronie HTML, zawartość zewnętrznego JS zostanie „skopiowana / wklejona” do strony HTML przed renderowaniem strony. Lub na swojej stronie PHP, jeśli chcesz. Proszę, popraw mnie, jeśli się mylę. Dzięki.
Moje przykładowe pliki to:
ZEWNĘTRZNY 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>
<script>
bloku tagów. Po prostu wypróbowałem 2 różne podejścia (bez deklarowania var przed plikiem helpers.js) i oba działały. Napiszę odpowiedź, ale wygląda na to, że w Twoim pytaniu brakuje kluczowych informacji.