2011-12-09 2 views
1

iframe 기록을 이해하려고합니다. 로컬 호스트 서버에서 A와 B 페이지를 만들었습니다. iframe을 사용하여 페이지 A를로드 한 다음 페이지 B에 대한 iframe src를 동적으로 변경합니다. 두 개의 서로 다른 URL을 방문했을 때이 의미가 history.length = 2일까요? iframe없이 시도 할 때 수행됩니다. 그러나, iframe을 사용하여 반환되는 값 1 만 얻고 있습니까?iframe history.length에 액세스하는 방법

<body> 
<div> 
    <iframe src='/pageA.php' id='myframe' onload='checkHistory()' ></iframe> 
</div> 
</body> 
</html> 
<script language="javascript" type="text/javascript" > 
    function checkHistory() 
    { 
      document.getElementById('myframe').src='/pageB.php'; 
      alert("Number of URLs in history list: " + history.length); 
    } 
</script> 

오전 나는 제대로 iframe을위한 history.lenght 값에 액세스하거나 iframe에서 document.getElementById('myframe').history.length보다는 일반 history.length 재산처럼 액세스 할 수 있습니까?

이것은 나를 혼란스럽게 만들었습니다. 나는 페이지 B를 열고 값을 비교하기는하지만 여전히 운이 없기 전에 history.length 값을 저장하려고 시도했다. iframe에는 브라우저 탭 윈도우와 마찬가지로 내부 페이지 방문 기록이 있어야합니까?

답변

-1

iframe은 자체 엔티티로 존재합니다. 고유 한 권한으로 창과 문서. iframe의 기록은 부모의 기록에 연결되어 있지 않습니다. iframe에로드 된 페이지는 상위 기록으로 계산되지 않습니다. 당신은을 통해 iframe이 자신의 기록에 액세스 할 수 있습니다. (이것은 당신의 예에서 알 수 있듯이 당신은 iframe이 부모와 동일한 도메인에서로드 가정)

document.getElementById("myframe").contentWindow.history.length 

+1

무엇은 iframe의 내용이 다른 도메인의 경우 약 ? –

+0

그런 경우 브라우저의 보안 모델은 이러한 세부 정보를 노출하지 않습니다 ... – Bosh

+0

올바르지 않습니다. iframe 내의 탐색은 부모의 history.length 값에 추가되며 가장 최근의 탐색이 프레임 내에 있으면 iframe의 기록에서 처음으로 돌아갈 것입니다. 그러나 당신은 역사의 세부 사항이 가려져 있다는 것이 맞습니다. –

관련 문제