2012-03-06 1 views
1

내 페이지 중 하나에서 기본 페이지와 다른 하위 도메인에서로드 된 iframe이 있습니다.iframe에서 상위 창에 대한 메서드 호출이 Opera에서 실패합니다.

window.parent.page.doit() 

이것은 대부분의 브라우저에서 잘 작동 (IE : 두 문서에서 나는, 내가 부모 페이지의 iframe 대응의 메소드를 호출하려고 다음, 동일하게 뭔가를 document.domain을 설정 , 파이어 폭스, 크롬, 사파리)하지만 다음과 같은 오류 메시지와 함께 오페라에 실패, 그것은 오페라 것 같아 내가이에 찾아 관리에서

Uncaught exception: ReferenceError: Security error: attempted to read protected variable: page

는 브라우저의 나머지 부분보다 엄격한 보안이있다. 이 문제를 겪은 사람이 있습니까? 모든 아이디어를 해결하는 방법이나 해결 방법은 무엇입니까?

감사합니다.

답변

0

당신이 두 페이지에 두 번째 수준 도메인 document.domain을 설정해야, 즉

maindomain.com

document.domain = "maindomain.com"; 

subdomain.maindomain.com

document.domain = "maindomain.com"; 
+0

필자는 다음과 같이 썼다. * 두 문서 모두 document.domain을 동일하게 설정한다. 그렇지 않으면 다른 브라우저에서는 작동하지 않을 것이다. 게다가. –

+0

여기 testpage를 만듭니다. http://testplayground.com/xdm/, opera 11.61 (mac os)에서 잘 작동합니다. 오페라에서 작동합니까? – Goshka

+0

그래, 그게 내 오페라에서 작동, 내가 왜 내가 설명한 문제가 확실하지 않아요, 나는 다른 문제를 해결하기 위해 일부 코드를 변경하고 오류가 사라졌습니다. 두 문서의 도메인을 분명히 변경했기 때문에 그 파일이 무엇을 유발했는지 확신 할 수 없습니다. 도와 줘서 고마워. –

0

나는 오페라의 일부 버전을 보았다. (약 11.60은 내가 생각한다?) 페이지의 보안 정보를 캐시한다. 그래서 캐시를 지우고 다시 시작한 후에 사라지는 보안 오류가 발생했습니다. 그것은 디버깅을 위해 빤다. 그러나 적어도 당신의 방문자는 일반적으로이 문제를 가지지 않을 것이다.

+0

문제는 어떻게 든 사라 졌는데 어떻게 될지 모르겠지만 캐시를 지우면 (이력, 쿠키, 무엇) 브라우저 (브라우저와 컴퓨터)를 다시 시작하지 않고이 문제에 아무런 영향을 미치지 않는다고 말할 수 있습니다. –

+0

와우. 내가 생각할 수있는 유일한 다른 문제는 타이밍 문제 일 것입니다. document.domain = ... 행은 가능한 한 페이지에서 가능한 빨리 처리되어야하며 onload 또는 다른 이벤트 처리기 안에 있지 않아야합니다. – hallvors

+0

아니요, 그렇지 않은지 확인하기 위해 _alert_를 사용했습니다 (이후 블록) 그래서 언제 일어날 지 알게 될 것입니다. _document.domain_ 할당은 프레임간에 통신이 있기 전에 발생했습니다. –