Interessante Quirk con la parola chiave "con" in JavaScript e Parent/Child Windows
-
28-10-2019 - |
Domanda
Ho notato qualcosa di peculiare sulla parola chiave "con" in JavaScript e nella relazione con finestra genitore e figlio, in particolare la finestra.opener. Non l'ho testato dalla finestra genitore, solo il bambino, ma vale la pena notare nell'esempio seguente
Finestra genitore (parent.html):
// global scope
function ParentFunc() { alert("I am a parent function"); }
Finestra figlio (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 parola chiave "con", in questo caso, passa alla finestra genitore e il secondo avviso spara anche un onfocus implicito alla finestra genitore. Non mi rendevo conto che "con" sarebbe passato alla finestra del genitore, ma ora ha senso.
Soluzione
Questo accade perché window
è lo spazio dei nomi globale quando si esegue JavaScript in un browser Web. Quando scrivi:
alert('Hello, World!');
Stai effettivamente chiamando il window.alert
metodo.