2013-04-06 2 views

답변

1

프레임에 들어있는 내용이 동일 도메인에있는 경우에만 스크립트가 실행되는 페이지의 Same-Origin Policy - SOP를 참조하십시오.

그렇지 않으면 프레임의 DOM에 액세스 할 수 없습니다.

페이지가 동일한 도메인에 있으면 코드가 완벽하게 유효합니다 (프레임의 페이지가로드되었다고 가정).

업데이트 :

if (window.frames[0].document.getElementById('xl')) { 
    window.frames[0].location.href = "acta.html"; 
} 

대신의 프레임/iframe 요소에 대한 참조가있는 경우 윈도우의 :

다음, 당신이 할 수있는 프레임의 간단한 변경 location 객체의 내용을 변경하려면 (frame[0])이면 src 특성을 사용할 수도 있습니다.

당신은 또한 단지 일을 상단 윈도우의 위치를 ​​변경할 수 있습니다 :

window.location.href = "acta.html"; 

그러나 변경됩니다, 물론, 페이지의 URL이 너무. 이전과 같이 URL을 유지하려면 기본적으로 현재 메인 윈도우와 숨겨진 프레임을 래핑하는 다른 iframe을 사용해야합니다. 따라서 주소 표시 줄에 표시된 URL은 첫 번째 프레임의 내용을 "acta.html"로 변경하더라도 변경되지 않습니다.

XMLHttpRequest 개체를 사용하여 http 호출을 만들고 페이지 원본을로드 한 다음 현재 페이지 본문을 XHR에서 검색 한 것으로 바꿀 수도 있습니다. 그러나 그것은 추한 것입니다. 이런 종류의 리디렉션은 동일한 URL을 유지하면서 클라이언트 측이 아니라 서버 측에서 수행해야합니다.

+0

페이지와 iframe이 동일한 도메인에 있습니다. 하지만 {} 사이에 무엇을 입력해야합니까? – marius

+0

페이지 B가있는 iframe이 포함 된 페이지 A가 있습니다. 따라서 페이지 B에 특정 요소가 포함되어 있으면 페이지 A의 위치를 ​​변경 하시겠습니까? – ZER0

+0

페이지 A (index.html) 내에 페이지 B가 있습니다. Iframe 페이지 B가 숨겨져 있습니다. 페이지 B에 'xl'요소가 포함되어있을 때 페이지 A (acta.html 콘텐츠)에 다른 콘텐츠를로드해야하지만 동일한 (index.html)이면서 콘텐츠 만 변경하고 URL은 변경하지 않아야합니다. – marius

관련 문제