2013-01-18 3 views
0

페이지가있는 MVC 사이트 (if x라고 부름)에 iframe이 포함 된 MVC 사이트가 있습니다 (x2라고 부름). iframe (x2)과 상호 작용할 때 특정 URL (y라고 부름)로 끝나면 iframe (x2)에서 열지 않고 브라우저에서 열어 보려는 URL (y)을 원합니다. 메인 페이지로 나는 Y가 Y로 바뀌길 바란다. JQuery의 마술은 무엇이 필요합니까?iframe에서 기본 창으로 페이지로드

편집

내 고장, 내 자신을 충분히 설명하지 않았다. 내가 클릭하는 링크를 사용하여 해당 페이지로 이동하지는 않지만 외부 사이트는 iframe에서 해당 페이지로 리디렉션됩니다. 어떤 jQuery를 할 필요가 없습니다

+0

페이지 Y를 제어 할 수 있습니까? – Leeish

+0

나는 y를 제어 할 수있다. –

+0

그럼 본질적으로 똑같은 일을하기 때문에 아래 편집 된 대답을 사용했다. 내 편집을 참조하십시오. – Leeish

답변

1

. 나는 비슷한 것을했다. 내 페이지 중 하나에 iframe이 있습니다. iframe을 변경하는 대신 특정 링크를 클릭하면 상위 페이지가 변경됩니다.

http://davidwalsh.name/window-postmessage에는 사용 방법에 대한 훌륭한 기사가 있습니다. 본질적으로 x 페이지에 리스너를 설정합니다. 페이지 y를로드 할 때 페이지 y가 부모 창에 메시지를 게시하도록하십시오. X는 해당 메시지를 청취하고 그에 따라 작동합니다.

EDIT : 수신기를 추가하여 iFrame의 onLoad 이벤트를 확인하십시오. 매번 iFrame의 URL을보십시오. 해당 URL이 페이지 Y와 일치하면 페이지 X가 URL을 변경하도록합니다.

+0

이것은 HTML 5 것 - 모든 고객이 아닌 것 같다. 최신 브라우저를 사용하십시오 –

+0

그럼 아마 운이 없을 것입니다. 여전히 post.message를 사용할 수 있습니다. 그리고 폴백으로 URL을 확인하기 위해 리스너를 설정하십시오. http://stackoverflow.com/questions/938180/get-current-url-from-iframe 페이지 Y의 URL을 확인한 후에 페이지를 강제 변경하십시오. 이상적이지 않지만 뒤로 물러서십시오. 사용자 모두에게 새로운 브라우저가 없기 때문에 아무도 새로운 기술을 사용할 수 없다는 것을 의미하지는 않습니다. 새로운 기술로 이런 문제를 해결할 수 있습니다. 적절한 대체 수단을 제공하고 새 차를 얻기 위해 고속도로에서 Model-Ts를 몰고 오는 사람들에게 알려주십시오. – Leeish

+0

http://stackoverflow.com/questions/2429045/iframe-src-change-event-detection iFrame URL 변경 이벤트를 수신하는 방법을 읽을 수 있습니다. – Leeish

1

, 그냥 <a>target을 넣어 : 당신은 window.postmessage를 통해이 일에 볼 수

<a href="@Url.Action("Action", "Controller", { property = 'foo' })" target="_parent">Link</a> 
+0

이것은 작동하지 않습니다. URL은 우리 편이 아닙니다. 외부 사이트에서 리디렉션됩니다. –

+0

동일한 출발지 정책/XSS로 인해 iframe을 통해 다른 도메인의 콘텐츠와 상호 작용할 수 없기 때문에 필요한 것은 불가능합니다. –

+0

게시 메시지를 통해 할 수 있습니다. 하지만 여전히 iFrame의 페이지에 액세스 할 수 있어야합니다. 나는 그것을 교차 도메인으로한다. – Leeish

1

URL의 끝에 해시 태그를 사용하고 대상 위치에서 루프를 확인하기 위해 루프를 사용할 수 있다고 생각합니다. 해시 태그를 변경하면 URL이 다시로드되지 않고 대상 프레임에서 해시 태그를 읽을 수 있습니다. 해키지만 작동해야합니다.

관련 문제