Skip to content

internet explorer에서 javascript iframe close() 이상동작 개발이야기

iframe에 flas을 동적으로 표시를 해야해서 아래의 처리로 내용을 javascript로 구현했는데 유독 IE에서만 비정상적으로 동작했습니다.
    * iframe_.document.open()
    * iframe_.document.write()
    * iframe_.document.close()


ie7에서는 flash내용이 표시가 되지 않았고 ie8에서는 처음 로딩하면 안보이다가 리로딩하면 보이고 하는 현상이었습니다.

다른 브라우저들은 이상없이 잘 만 되는데 말이죠.

결국에 해결한 방법은 브라우저가 ie인 경우 iframe document readyState 속성을 확인하고 close() 처리하는것으로 해결했습니다.


작업하다보니 document.readyState는 IE만의 고유한 속성이네요. 그래서 firefox에서는 지원되지 않는 속성입니다.

근데 opera, safari, chrome 등의 웹킷형제들은 지원을 하고 있네요 참고하세요


Iframe_.document.open("text/html","replace");
Iframe_.document.write(flash_iframe_contents);

function iFrameClose() {
    if (ie5 && (Iframe_.document.readyState == 'interactive' || Iframe_.document.readyState == 'complete')) {
        Iframe_.document.close();
    } else {
        setTimeout('iFrameClose();', 100);
    }
}

if (!ie5) {
    Iframe_.document.close();
} else {
    iFrameClose();
} 

Share
Tag :

Leave Comments

T-NAVI