2011-04-06 7 views
3

저는 이미 자바 스크립트 문제를 해결하는 방법을 알아 내려고 몇 시간을 잃었습니다. 나는 팝업 창을 여는 JS 기능이 있습니다팝업 창에서 창 변수에 액세스하는 방법은 무엇입니까?

function openSearchWindow(searchType, targetIdField, targetDescField) 

을 나는이 새로운 창 2 개 속성 설정 :

var win = window.open(searchPage, searchType + "search", style); 
win.targetIdField = targetIdField; 
win.targetDescField = targetDescField; 

여기까지, 모든 것이 완벽하게 작동합니다. 내 팝업 창에서, 그러나, 나는 이전에 설정이 두 변수에 액세스해야합니다 win.targetIdField 및 win.targetDescField

내가 그들을 어떻게 액세스 할 수 있습니다 ? 나는 거의 모든 것을 시도했다.

편집 - 시간, 팝업 창에서

는 사실 검색 엔진이있다. 사용자가 결과를 클릭하면 선택한 항목의 ID와 설명을 가져와이를 "opener"창으로 전달하여 각각 targetIdField 및 targetDescField에 배치하는 JS 함수가 있습니다.

EDIT (2) 검색이 팝업의 URL 변경 (서블릿을 통해) 팝업에서 수행되어 있지만 동일한 도메인 내에서 항상되면

.

미리 감사드립니다.

루카스.

+0

하여 수행 할 수 있습니다? –

답변

1

window.targetIdField을 통해 액세스를 시도 했습니까? thait이 작동하지 않으면 부모 창에서 두 속성을 바인딩 할 수 있습니다 (win.targetIdField 대신 window.targetIdField 사용). window.opener.targetFieldid을 사용하여 열린 창에서 해당 속성에 액세스 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다, freaktm. 사실 나는 그것을 시도했으나 효과가 없었습니다. 중요한 점은 각 필드에 대한 속성을 만들어야하기 때문에 부모 윈도우에이 변수를 넣는 것이 무의미하다는 것입니다 (부모 윈도우에는 동일한 자바 스크립트 함수에 액세스 할 일부 필드가 있습니다.) – LucasM

0

win.contentWindow을 사용하면 새 창 개체에 액세스 할 수 있습니다.

은 그럼 당신은 사용할 수 있습니다

win.contentWindow.targetIdField = targetIdField; 
win.contentWindow.targetDescField = targetDescField; 

새 팝업의 창 개체에 대한 targetIdFieldtargetDescField 변수를 설정합니다.

크로스 윈도우 액세스는 동일한 도메인으로 제한됩니다. 이 (내가 아는) 모든 브라우저에서 지원되기 때문에

+0

감사합니다, Soubok. 귀하의 솔루션을 사용해보십시오. 그러나 작동하지 않는 것 같습니다. 팝업 내에서 변수에 액세스 할 때 여전히 동일한 문제가 있습니다. – LucasM

+0

은 동일한 도메인의 팝업 (URL)입니까? 하위 창에 문제가있을 수 있음 –

+0

예.서블릿을 통해 검색이 수행되면 URL이 서블릿 URL로 변경되지만 우리는 항상 동일한 도메인에 대해 이야기하기 때문에 이러한 속성이 손실되는지 궁금합니다. – LucasM

1

나는,의 setAttribute와의 getAttribute 사용 약관 좋습니다. 당신은 이것에 대한 해결책을 찾기 위해 지금까지 수 있었

//Setting the properties (in the parent window) 
win.setAttribute('targetIdField', targetIdField); 
win.setAttribute('targetDescField', targetDescField); 

//Accessing the properties (in the pop-up window) 
window.getAttribute('targetIdField'); //you might need to use lowercase letters... 
//If that doesn't work you can try multiple things 
this.getAttribute... 
+0

감사합니다. dominicbri7! 나는 당신이 제안한 것처럼, 팝업을 열리는 함수에서 두 속성을 모두 설정했다. 그런 다음 팝업에서 액세스하려고했습니다. var proptext = window.getAttribute ('targetid'); 알림 (proptext); 또한 this.getAttribute ...를 사용하지만 아무 일도 발생하지 않습니다. – LucasM

0

부모 창에서 변수를 액세스/오프너 창이 window.opener.yourVariableName

관련 문제