다른 창 컨텍스트에서 Javascript 메서드를 호출 할 수 있습니까?
전역 함수가 있다고 가정하십시오. alert2 :function alert2(msg) {
window.alert(msg);
}
또한 두 번째 창 객체에 대한 참조가 있습니다.
childWindow = window.open(myUrl);
이제 window에서 alert2를 childWindow의 컨텍스트로 호출하려고합니다.
alert2.call(childWindow, "does not work without this.window");
alert2의 "window"가이 메서드가 정의 된 창 (부모 창)에 바인딩되어 있기 때문에 대화 상자가 주 창에 나타납니다.
한 가지 해결책은 alert2를 수정하는 것입니다.
function alert2(msg) {
this.alert(msg);
}
이 수정없이이 작업을 수행 할 수 있습니까? 뭔가 이런 :
alert2.call(childWindow.parent, "no such thing as window.parent");
이것은 고안된 예제입니다; childWindow.alert ("")가 내가 찾고있는 것이 아닙니다!
로 시작하는 jsfiddle에서 내 소스를보고 수정할 수 있습니다.
감사합니다 ... 당신의 코드는 문제에 대한 이해를 보여줍니다. 이 경우 위의 func()에서 "child"또는 "parent"의 의미를 대체 할 방법이 없습니다. 비슷하게 func가 정의 될 때 alert2가 "parent"와 같이 생성되고 "child"가 캡처 될 때 "window"가 캡처 되었기 때문에 함수에서 "window"의 의미를 대체 할 방법이없는 것으로 보입니다. –