Hola usuario de nuestro sitio web, descubrimos la solución a tu interrogante, deslízate y la verás aquí.
Solución:
Debe declarar la variable antes de incluir el archivo helpers.js. Simplemente cree una etiqueta de secuencia de comandos encima de la inclusión para helpers.js y defínala allí.
...
La variable se puede declarar en el .js
y simplemente referenciado en el archivo HTML. mi versión 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");
Y una página para probarlo:
Test Page
myFunctionWasCalled is
Some stuff in between
myFunctionWasCalled is
Verás la prueba alert()
mostrará dos cosas diferentes, y el valor escrito en la página será diferente la segunda vez.
OK, chicos, 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 en absoluto? ¿Pueden las funciones comunicarse a través de una var 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á e 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).
- Ellos 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 represente la página. O en su página PHP si lo desea. 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:
External JS Globals - index.php
HTML 2
External JS Globals - index2.php