Interesante Quirk con la palabra clave "con" en JavaScript y Windows de padres/niños
-
28-10-2019 - |
Pregunta
Noté algo peculiar sobre la palabra clave "con" en JavaScript y la relación de la ventana matriz e infantil, específicamente Window.apener. No he probado esto desde la ventana principal, solo el niño, pero vale la pena señalar en el ejemplo a continuación:
Ventana principal (parent.html):
// global scope
function ParentFunc() { alert("I am a parent function"); }
Ventana infantil (child.html):
// global scope
var baseWin = window.opener;
// "this" keyword corresponds to Child.html when function below is called
function Child_Onclick_Func()
{
alert("Hi, from Child");
with (baseWin)
{
ParentFunc();
alert("Hi, from Parent");
}
alert("Hi, back to Child");
}
La palabra clave "con", en este caso, cambia a la ventana principal y la segunda alerta también dispara un infocus implícito a la ventana principal. No me di cuenta de "con" cambiaría a la ventana principal, pero ahora tiene sentido.
Solución
Esto sucede porque window
es el espacio de nombres global cuando se ejecuta JavaScript en un navegador web. Cuando escribes:
alert('Hello, World!');
En realidad estás llamando al window.alert
método.