4

뉴스 레터 구독과 관련하여 Aweber와 관련된 특수한 목적을 위해 중첩 된 IFRAME을 내부에로드하는 페이지가 있으며 둘 다 동일한 도메인에 있습니다. (다른 많은 stackoverflow 게시물은 다른 도메인에 대해 이야기하지만,이 질문은 동일한 도메인에만 적용됩니다.) 두 사람이 통신하려면 크로스 플랫폼 방식 (IE6의 새벽 같은 브라우저 포함)이 필요합니다.페이지와 IFRAME (동일 도메인) 사이의 교차 플랫폼 브라우저 통신

예를 들어, 누군가 이름과 이메일을 채우고 체크 박스를 클릭하면 체크 박스 옆의 숨겨진 IFRAME이 setInterval() 루프를보고 앉아 있습니다. 알림을 받으면 이름과 이메일을 가져와 양식 게시를합니다.

처음에는 부모 페이지에 쿠키를 놓을 수 있다고 생각했는데 IFRAME 자식은 그 쿠키를 보면서 간격을두고 앉아있었습니다. 하지만 제 테스트 결과이 방법은 효과가 없을 것입니다. 쿠키가 생성되지만 IFRAME은 쿠키를 볼 수 없습니다. 그래서 IFRAME에서 메타 새로 고침 기술을 시도했지만 다시 어떤 이유로 쿠키를 볼 수 없었습니다.

내가 만날 수있는 유일한 해결책은 상위 페이지가 클릭 (우리는 jQuery를 사용)하고 서버에 AJAX 데이터 푸시를 데이터베이스로 전달한다는 것입니다. 그런 다음 IFRAME은 데이터베이스 값이 변경되었는지 확인하기 위해 AJAX를 통해 서버로 다시 간격을 점검하고 변경된 경우 응답합니다. 그러나 이것은 과도하게 설계된 솔루션처럼 보입니다. 저는 IE6 이상 기간의 초기 브라우저에서도 크로스 플랫폼에서 작동하는보다 쉬운 대안을 찾고 있습니다.

답변

4

훨씬 더 간단합니다. iframe에서 부모 창을 포함하는 parent 변수에 액세스 할 수 있습니다. 따라서 parent.document을 사용하여 양식을 찾고 값을 읽을 수 있습니다.

+0

IE6, IE8, 모든 FF, Safari 4.0.4, Opera 10.50 및 Chrome 4.0.249.89에서 성공적으로 테스트되었습니다. 괜찮아. 그래서 이것이 나를위한 해결책입니다. – Volomike

관련 문제