Можно ли вызвать метод Javascript в контексте другого окна?

Допустим, у вас есть глобальная функция 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/

9
задан Corey Alix 24 August 2011 в 18:01
поделиться