2009-07-17 8 views
0

FF 및 기타 IE가 아닌 브라우저의 경우 window.opener.outerWidth/Height는 필요한 정보를 제공합니다. IE의 경우 IE6에서 8까지 여전히 손실이 있습니다. 오프너의 페이지가 제 제어 범위를 넘어서서 jquery를 사용할 수 없으므로 window.opener. $ (window)를 수행 할 수 없습니다. 이것은 오프너 jquery '첨부 된'(내가 틀렸다면 나를 수정해야합니다)가 필요합니다.오프너 창 (IE)의 창 크기 얻기

나는 꽤 많은 인터넷 검색을하고이 사이트를 검색했지만 아직 명확한 답변을 찾을 수 없습니다.

추가 할 내용 : 열린 크기의 창에 대해 resizeTo (w, h)를 수행 할 수 있도록 외부 크기가 필요합니다. w 및 h는 오프너 크기의 비율을 기반으로 계산됩니다. "resizeTo"는 아이러니하게도 IE 및 다른 브라우저의 외부 크기를 설정합니다. resizeBy를 사용하여 지저분한로드를 시도했습니다.

답변

3

outerWidthouterHeight은 브라우저 창의 크기 (사이드 바, 윈도우 크롬 및 테두리 재 지정 테두리/핸들 포함)를 정의합니다. 불행히도 IE에서는 이러한 치수를 얻을 수 없습니다. 창 뷰포트 치수 만 사용할 수 있습니다 (본 대부분의 응용 프로그램에 충분합니다). 일명 window.innerWidth/window.innerHeight.

jQuery는 현재 창 뷰포트의 크기는 줄 수 있지만 다른 창 (예 : 오프너, 하위 등)은 제공 할 수 없습니다. 따라서 코드를 작성해야합니다.

// get viewport size (without scrolling) of the given window object 
function clientSize(win) { 
    var width, height; 

    if(win.innerWidth || win.innerHeight) { 
     width = win.innerWidth; 
     height = win.innerHeight; 
    } else { 
     var doc = win.document; 
     width = doc.documentElement.clientWidth || doc.body.clientWidth; 
     height = doc.documentElement.clientHeight || doc.body.clientHeight; 
    } 

    return { width:width, height:height } 
} 

이 좋아 시도해보십시오 :

var openerSize = clientSize(window.opener); 
// now use openerSize.width, openerSize.height 

또한 주어진 윈도우가 다른 도메인의 문서를로드 한 경우이 값 중 하나를 읽을 수 있습니다 (보안 조치 여기에 원유 샘플입니다).

+0

@crescentfresh 답변 해 주셔서 감사합니다. 나는 실제로이 질문을 게시하기 전에 언급 한 방법을 사용하여 시도했습니다. 문제는, 나는 정말 바깥 쪽 크기가 필요하여 열린 창에 대해 resizeTo (w, h)를 할 수 있고, w와 h는 비율이나 오프너 크기에 따라 계산됩니다. "resizeTo"는 아이러니하게도 IE 및 다른 브라우저의 외부 크기를 설정합니다. resizeBy를 사용하여 지저분한로드를 시도했습니다. 어쨌든 입력 +1 : –

+0

@okw : 최종 목표가'resizeTo()'를 호출하는 것이라면 여기에서 트릭을 할 수 있습니다 : http://www.faqts.com/knowledge_base/view.phtml/aid/ 1178 그것은'resizeTo (500, 500)'에 고정 된 크기의 쓰레기를 호출하고, IE가보고하는 값을 뺀 다음 나중에 * real *'resizeTo' 호출에있는 값을 사용하는 것이다. –

+0

@crescentfresh 제 최종 목표는 새 창을 오프너의 고정 비율로 크기를 조정하는 것입니다. 그래서 resizeTo가 가장 간단합니다. ResizeBy는 내가 시도한 여행이었다. 귀하의 제안은 다소 정통적이지만 효과가 있습니까? 어쨌든, 그것을 고맙게 생각하고, 더 나은 해결책이 나오지 않는다면, 나는 그렇게 할 것입니다. :-) –