Bien, muchachos, aquí está mi pequeña prueba también. Tuve un problema similar, así que decidí probar 3 situaciones:
- Un archivo HTML, un archivo JS externo ... ¿funciona? ¿Se pueden comunicar las funciones a través de una variable global?
- Dos archivos HTML, un archivo JS externo, un navegador, dos pestañas: ¿interferirán a través de la var global?
- Un archivo HTML, abierto por 2 navegadores, ¿funcionará y interferirán?
Todos los resultados fueron los esperados.
- Funciona. Las funciones f1 () y f2 () se comunican a través de var global (var está en el archivo JS externo, no en el archivo HTML).
- No interfieren. Aparentemente se han realizado copias distintas del archivo JS para cada pestaña del navegador, cada página HTML.
- Todo funciona de forma independiente, como se esperaba.
En lugar de buscar tutoriales, me resultó más fácil probarlo, así que lo hice. Mi conclusión: cada vez que incluye un archivo JS externo en su página HTML, el contenido del JS externo se "copia / pega" en su página HTML antes de que se renderice la página. O en su página PHP si lo desea. Por favor corrígeme si me equivoco aquí. Gracias
Mis archivos de ejemplo siguen:
JS EXTERNO:
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>
bloque de etiquetas. Acabo de probar 2 enfoques diferentes (sin declarar la var antes del archivo helpers.js) y ambos funcionaron. Publicaré una respuesta, pero parece que debe faltar alguna pieza clave de información en su pregunta.