2013-02-20 2 views
0

내가 이전 아약스 호출에서 중첩 된 개체를 포함 내 부모 창에서 개체를 가지고 있지만, 단순화를 위해, 그것은 다음과 같습니다 가정 해 봅시다에 객체를 할당 할 수 있습니다 방법 :나는 안정적으로 새로 만든 창 (window.open)

var myStuff = { id:1, computer:"ZX Spectrum" }; 

팝업 창을 열고 객체에 대한 참조를 전달해야합니다. 그러므로 나는이 :

this.oPopup = window.open("/my/page.htm", "MyPopupTarget", opts, false); 
this.oPopup.myStuff = myStuff; 

보통이 잘 작동하지만 가끔 2 라인에서 발생하는 예외를받을 수 있나요 때때로 나는 그것이 "mystuff에"변수가 존재하지 않는 발견하면 팝업 창에서 발생하는 예외를 얻을.

타이밍 문제라고 생각되지만, myStuff 개체를 안정적으로 전달하는 방법을 알고 싶습니다. setTimeout()에 랩핑해야합니까? 내가들을 수있는 사건이 있습니까?

감사합니다.

+1

부모 창이 팝업으로 표시되도록하는 것이 좋습니다. 그렇다면 타이밍에 대해 걱정할 필요가 없습니다. 팝업을 열기 전에 팝업창을 띄우면 팝업이로드 될 때마다 팝업을 가져올 수 있습니다. –

+0

감사합니다. Dark Falcon. 나는이 전제에서 원래 일했다. 나는 아래쪽이 더 안정적 일 것이라고 읽었지 만 나는 그 제안의 원천으로 되돌아 가서 그것을위한 추론을 철저히해야 할 것이다. 감사. –

답변

0

정확히 어떤 유형의 예외가 발생하는지 알려주면 도움이됩니다.

채워지기 전에 데이터에 액세스하는 새 창에서 스레딩 문제 일 수 있습니다. 창 개체를 만들고 "myStuff"변수를 할당 한 다음 Open 메서드를 개별적으로 호출하면 모든 데이터가 열리기 전에 할당됩니다.

+0

나는 오류를 포착하고 예외의 속성을 경고했다. 그러나 세 가지 속성 (fileName, lineNumber 및 columnNumber)은 유용하고 올바른 모든 값을 가졌지 만 유형 속성 (null 참조 또는 정의되지 않았거나 유사한 값이 예상 됨)이 없습니다. 우리는 FireFox (최신)를 사용하고 있습니다. 캐치 코드 : catch (e) { var s = ""; (n의 전자) s + = "."+ n + "="+ e [n] + "\ n"; 알림 (들); } –