Rev. 2.73

IE에서는 페이지의 위치가 변할때 마다 클릭음이 발생한다. 이것은 사용자에게 무언가 일어나고 있다는 것을 알리기 때문에 중요한 요인으로 작용하는 특성을 가진다. 하지만 규모가 큰 웹 애플리케이션에서는 이 클릭음이 진짜로 성가시게 될 수도 있다. 예를 들면 아이프레임을 이용한 자동 순환 광고가 그러하다. 아무런 액션을 취하지 않아도 클릭 노이즈가 지속적으로 발생한다면 방문객은 얼마 버티지 못하고 떠나 버릴지도 모른다. 실제로 매우 불쾌하기도하고 거슬리기도 한다. 그래서 Julien Lecomte씨는 아이프레임에서 src위치를 변경할 때 소리를 지울 방법을 모색해냈다.

function setIFrameSrc(iframe, src) {
    var el;
    iframe = YAHOO.util.Dom.get(iframe);
    if (YAHOO.env.ua.ie) {
        // Create a new hidden iframe.
        el = iframe.cloneNode(true);
        el.style.position = "absolute";
        el.style.visibility = "hidden";
        // keep the original iframe id unique!
        el.id = "";
        // Listen for the onload event.
        YAHOO.util.Event.addListener(el, "load", function () {
            // First, remove the event listener or the old iframe
            // we intend to discard will not be freed...
            YAHOO.util.Event.removeListener(this, "load", arguments.callee);
            // Show the iframe.
            this.style.position = "";
            this.style.visibility = "";
            // Replace the old iframe with the new one.
            iframe.parentNode.replaceChild(this, iframe);
            // Reset the iframe id.
            this.id = iframe.id;
        });
        // Set its src first...
        el.src = src;
        // ...and then append it to the body of the document.
        document.body.appendChild(el);
    } else {
        iframe.src = src;
    }
}

YUI로 작성된 이 코드의 작동원리는 간단하다. 새로운 숨겨진 아이프레임을 생성하고 src를 할당한다. 로드가 완료되면 기존 아이프레임을 새로 생성한 아이프레임으로 대체하여 노이즈를 제거하는 트릭이다. 예제를 통해 실험해 보자.

Comments

Pete LePage씨는 IE블로그를 통해서 더이상 "Click to Activate" 메시지가 나타나지 않을 것이라는 글을 작성했습니다. 이올라스(Eolas) 소송건 때문에 2006년 4월 이후 업데이트된 IE에서는 플래시 오브젝트가 사용될 경우 클릭하여 활성화해야 했습니다. 약 20개월이 흐른 지금, MS가 이올라스로부터 관련기술의 라이센스를 취득하여 더이상 이 메시지가 나타나지 않을 것이라고 합니다. 이는 곧 SWFObject와 같은 자동 활성화 스크립트를 작성할 일도 없어지게 되는 것입니다. 우선 다음 달(12월)부터 다운로드 센터를 통해 부분적 업데이트를 시작으로 윈도 비스타 SP1과 윈도XP SP3에서는 완전히 사라지게 할 계획이라고 밝혔습니다. 앞으로 골치아픈 치닥거리가 한가지 줄었지만, 그동안 사용했던 우회코드들을 수정해야하는 치닥거리가 생겨났습니다. 기쁨과 짜증이 교차하는 순간입니다.

Comments

companionjs.gif

Jean-Fabrice Rabaute씨는 파이어폭스 플러그인 Firebug콘솔 API와 흡사한(동일한) IE용 디버깅 도구인 Companion.JS를 릴리즈했습니다. IE의 플러그인 형태로 설치되며, 도구에 추가된 아이콘을 클릭하여 페널을 열 수 있습니다. 이제 IE에서도 콘솔 API가 도입된 편리한 자바스크립트 디버깅을 구사할 수 있겠습니다.

덧. 어찌된 영문인지 모르겠으나, 제가 사용하는 IE에서는 작동하지 않더군요. "The Companion.JS Debugger could not connect to IE instance yet. Be sure to have unchecked the "Disable Script Debugging (Internet Explorer)" in the IE options..." 메시지가 사라지지 않습니다.

Comments