Гаразд, хлопці, ось і мій маленький тест. У мене була подібна проблема, тому я вирішив перевірити 3 ситуації:
- Один HTML-файл, один зовнішній JS-файл ... чи працює він взагалі - чи можуть функції спілкування через глобальний var?
- Два файли HTML, один зовнішній файл JS, один браузер, дві вкладки: чи будуть вони заважати через глобальний var?
- Один HTML-файл, відкритий двома браузерами, чи він працюватиме, і чи будуть вони заважати?
Всі результати були як очікували.
- Це працює. Функції f1 () та f2 () спілкуються через глобальний var (var знаходиться у зовнішньому файлі JS, а не у файлі HTML).
- Вони не заважають. Очевидно чіткі копії файлу JS були зроблені для кожної вкладки браузера, кожної сторінки HTML.
- Все працює незалежно, як очікувалося.
Замість того, щоб переглядати підручники, мені було легше спробувати це, так я і зробив. Мій висновок: щоразу, коли ви додаєте зовнішній файл JS на свою сторінку HTML, вміст зовнішнього JS потрапляє "копіювати / вставляти" на вашу HTML-сторінку до того, як сторінка буде надана. Або на вашу сторінку PHP, якщо хочете. Будь ласка, виправте мене, якщо я тут помиляюся. Дякую.
Мої приклади наступні:
ЗОВНІШНІ 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>
блоці тегів. Я просто спробував 2 різних підходи (не оголошуючи var перед файлом helpers.js), і вони працювали. Я опублікую відповідь, але, здається, у вашому запитанні має бути відсутня якась ключова інформація.