iframe 과 부모 창

만약 에 iframe 의 등장 이 잘못 이 라면 iframe 에서 iframe 이 오 는 것 은 잘못 이 고 잘못 이다. 신 화 는 상고 시대 의 소란 속 에서 사라 지지 않 았 지만 회 구 의 오늘 에 계속 공연 되 었 다.생활 은 영원히 큰 염색 항아리 로 흰 천 한 조각 이 내 려 가 고 검 은 천 한 조각 이 나 오 며 검 은 천 한 조각 이 내 려 가 고 일곱 가지 색 천 한 조각 이 나온다.contentWindow 는 각 브 라 우 저 를 호 환 하여 하위 창의 window 대상 을 찾 을 수 있 습 니 다.contentDocument Firefox 지원, > ie8 의 ie 지원.하위 창의 document 대상 을 가 져 올 수 있 습 니 다.
//          
$(parent.document).scrollTop()

하위 iframe 에 부모 레벨 iframe 또는 손 레벨 iframe 높이 설정:
function showIframeH(){
    var parentWin = parent.document.getElementById("test");
    if(!parentWin) return false;    

    var sub = parentWin.contentWindow.document.getElementById("test2");
    if(!sub) return false;    

    var thirdHeight = sub.contentWindow.document.body.offsetHeight; //   body      
    sub.height = thirdHeight; //      iframe        

    var secondHeight = x.contentWindow.document.body.offsetHeight; //   body  
    x.height = secondHeight; //      iframe    

    //alert(secondHeight);
    //alert('body: ' + x.contentDocument.body.offsetHeight + ' div:' + thirdHeight);
}

페이지 A 에는 탭 을 전환 할 때 높이 가 변 하 는 탭 이 몇 개 포함 되 어 있 습 니 다.페이지 B 는 iframe 으로 페이지 A 를 참조 하고 A 를 불 러 올 때 iframe 의 높이 를 페이지 A 의 높이 로 설정 합 니 다 (사용자 정의 adjustHeight () 함수 호출).그러나 탭 을 전환 할 때 iframe 의 높이 는 변 하지 않 고 스크롤 바 가 나타 납 니 다.이 문제 의 난점 은 페이지 B 가 프레임 워 크 가 자동 으로 생 성 되 는 것 이다. 나 는 변경 할 수 없고 페이지 A 에서 만 이 문 제 를 복구 할 수 있다.물론 이 문제 의 전 제 는 페이지 A 와 B 가 같은 도 메 인 이라는 것 입 니 다. 자바 스 크 립 트 는 도 메 인 을 넘 어 접근 할 권리 가 없 기 때 문 입 니 다.그래서 문 제 는 페이지 A 에서 이 를 포함 하 는 iframe 대상 을 가 져 오 는 방법 으로 바 뀌 었 다.반나절 의 자 료 를 조사 한 후에 DOM 이 이 API 를 제공 하지 않 은 것 을 발 견 했 습 니 다. 그래서 다른 방법 이 생각 났 습 니 다. 부모 창 에 있 는 모든 iframe 대상 을 가 져 와 서 옮 겨 다 니 며 contentWindow 속성 을 self 와 비교 하 는 것 과 같 으 면 페이지 A 를 포함 하 는 iframe 을 표시 합 니 다.
function resetHeight() {
    if (!parent) {
        return;
    }
    var iframes = parent.document.getElementsByTagName('iframe');
    var length = iframes.length;
    if (length == 0) {
        return;
    }
    try {
        for (var i = 0; i < length; ++i) {
            var iframe = iframes[i];
            if (iframe.contentWindow === self) {
                parent.adjustHeight(iframe);
                return;
            }
        }
    } catch (e) {
    }
}

마지막 으로 document. getElementsByTagName ('iframe') 과 frames 의 차 이 를 말씀 드 리 겠 습 니 다.
전 자 는 HTML IFrame Element 대상 의 배열 을 얻 었 고 모든 대상 은 하나의 DOM 요소 입 니 다.
후 자 는 DOMWindow 대상 의 배열, 즉 창의 배열 을 얻 었 다.
HTML IFrameElement 대상 에 contentWindow 속성 이 있 는데 이 속성 은 프레임 의 창 대상 입 니 다.

좋은 웹페이지 즐겨찾기