Допустим, у вас есть глобальная функция alert2:
function alert2(msg) {
window.alert(msg);
}
И у вас также есть ссылка на второй объект окна:
childWindow = window.open(myUrl);
Теперь вы хотите вызвать alert2 из окна в контексте childWindow :
alert2.call(childWindow, "does not work without this.window");
Диалоговое окно появляется в главном окне, потому что «окно» внутри alert2 привязано к окну, в котором был определен этот метод (родительскому окну).
Одно из решений - изменить alert2:
function alert2(msg) {
this.alert(msg);
}
Можно ли сделать это без этой модификации? Примерно так:
alert2.call(childWindow.parent, "no such thing as window.parent");
Это надуманный пример; childWindow.alert ("") - это не то, что я ищу!
Мой исходный код можно увидеть и изменить на jsfiddle, начиная с http://jsfiddle.net/hJ7uw/2/